首页 > 代码库 > 剑指offer55 字符流中第一个不重复的字符(最典型错误)
剑指offer55 字符流中第一个不重复的字符(最典型错误)
典型并且基础的错误:
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 字符流中第一个不重复的字符(最典型错误)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。