消除重复数字

2018-08-20  本文已影响0人  執著我們的執著
[华为编程题]消除重复数字

分析

举个图例


伪代码:
for (int i = 0; i<len; i++)
   for (int j = 0; j < i; j++)
   {
       if (a[i] == a[j])
       {
           if (a[j+1] > a[j])
           {
               移除 j 位置数字;
               i --;        // i 回退
               break;
           }
           else
           {
               移除 i 位置数字;
               i --;        // i 回退
               break;
           }
       }
   }

以上,可以采用双向链表的结构存储数字



实现完整Code

#include <iostream>
#include <string>
using name space std;

int main()
{
    string s;
    while(cin>>s)
    {
        1. 数字字符串合法性检查
        
        2. 
        string res;
        res = s[0];
        for (int i = 1; i < s.size(); i++)
        {
            if (res.find(s[i]) == string :: npos)
            {
                res + = s[i];
            }
            else
            {
                int t = res.find(s[i]);
                if ((t+1) < res.size())
                {
                    if (res[t] < res[t+1])
                    {
                        res.erase(t, 1);          // 移走并且调整
                        res + = s[i];
                    }
                }
            }
        }
        cout<< res <<endl;
    }
    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读