1. 程式人生 > >劍指offer55 字符流中第一個不重復的字符(最典型錯誤)

劍指offer55 字符流中第一個不重復的字符(最典型錯誤)

string 對象 exp 構造函數 error: sig off sign ==

典型並且基礎的錯誤:

class Solution
{
public:
  //Insert one char from stringstream
    void Insert(char ch)
    {
        if(result[ch] == -1)
            result[ch] = index;
        else if(result[ch] >= 0)
            result[ch] = -2;
        index++;
    }
  //return the first appearence once char in current stringstream
char FirstAppearingOnce() { char ch = \0; int minindex = 999; for(int i = 0;i < 256;i++){ if(result[i] >= 0){ if(result[i] < minindex){ minindex = result[i]; ch = (char)i; } } }
return ch; } int result[256]; for(int i = 0;i < 256;i++) result[i] = -1; int index = 0; };

錯誤顯示:

編譯錯誤:您提交的代碼無法完成編譯
In file included from a.cc:2:
./solution.h:29:5: error: expected member name or ; after declaration specifiers
for(int i = 0;i < 256;i++)
^~~
a.cc:13:19: warning: comparison of integers of different signs: 
int and size_t (aka unsigned long) [-Wsign-compare] for(int i = 0;i < strlen(str);i++) { ~ ^ ~~~~~~~~~~~ 1 warning and 1 error generated.

c++的類中只能有屬性和方法(也可以說函數)。

方法就是你定義的類中的那些實現函數,屬性相當於類中的那些參數。

上面代碼中報錯的for循環,目的是對result數組進行初始化,但這個for循環不是一個函數,在類裏面是不允許這種執行語句的,必須轉換成函數才行。因為result本身是這個class類的屬性,所以對result的初始化,其實相當於對類屬性的初始化,可以通過構造函數來實現。

構造函數本身就是實現初始化類對象的數據成員。

劍指offer55 字符流中第一個不重復的字符(最典型錯誤)