计算最长公共数字串个数
生活随笔
收集整理的這篇文章主要介紹了
计算最长公共数字串个数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一.華為OJ題目(計算最長公共數字個數)
?
樣例輸出
輸出123058789,函數返回值9
輸出54761,函數返回值5
?
接口說明
函數原型:
???unsignedint?Continumax(char**?pOutputstr,??char*?intputstr)
輸入參數:
???char*?intputstr??輸入字符串;
輸出參數:
???char**?pOutputstr:?連續最長的數字串,如果連續最長的數字串的長度為0,應該返回空字符串;如果輸入字符串是空,也應該返回空字符串;??
返回值:
??連續最長的數字串的長度
1.1
出錯原因:
未對字符串指針初始化,使用了未初始化的指針;
1>?? f:\vstuio\project\applicacommonstr\applicacommonstr\sssr.cpp(44):warning C4700: 使用了未初始化的局部變量“p2”
2>?? 修改如下:
3>?? p2=new char[128];
4>?? ????for(int j=0;j<128;j++)
5>?? ??????????????? p2[j]=0;
6>?? 結果成功通過編譯!
1.2代碼如下:
?
<pre name="code" class="cpp">#include <iostream> #include <string> #include <vector> using namespace std; int main() {int max_num(char **poutstr, char *input);int num, length;char **p = new char*[128];char *str=new char[128];p[0]="";cin.get(str, 128, '\n');length = strlen(str);num = max_num(p, str);if(p[0]!="")cout << *p << ',' << num << endl;elsecout << 0 << endl;delete [] str;delete [] p;return 0; }int max_num(char **poutstr, char *input) {char *p1=input, *p2, temp[128]={0};int len = strlen(input), cnt=0, res = 0;//注意,以下是p2初始化,很重要,沒有這步編譯器將報警和出錯p2=new char[128];for(int j=0;j<128;j++)p2[j]=0;if (len<1){p2 = "";return 0;}for (int i = 0; i<len; i++){if (p1[i] <= '9'&&p1[i] >= '0'){temp[cnt++] = p1[i];if (cnt>res){res = cnt;for (int k = 0; k<cnt; k++)p2[k] =temp[k];}}else{cnt = 0;}}if (res == 0)p2 = "";*poutstr = p2;return res; }總結
以上是生活随笔為你收集整理的计算最长公共数字串个数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最大公共字符串输出
- 下一篇: new,delete总结