少し前をみつめる
TopCoder Statistics - Problem Statement
正答率85%。文字列処理も慣れればなんとかなります。
問題:ふぁにーなフェンスなんだよこれ、 | と-だけでなる文字列があって、前後で違う文字ならばフェンスになるんだ。適当な文字列からフェンスの最大の長さを返してね。
例:
"-|-|-|-" :7
"|-|---|-|---|-|" :5
"|||-||--|--|---|-||-|-|-|--||---||-||-||-|--||" :8
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class FunnyFence{
public:
int getLength(string s){
int k=1,j=0;
for(int i=1;i<s.size();i++){
if(s[i]!=s[i-1]) {
k+=1;
}else{
j=max(j,k);
k=1;
}
}
j=max(j,k);
printf("%d\n",j);
return j;
}
};
int main(){
FunnyFence ob1;
string f("|||-||--|--|---|-||-|-|-|--||---||-||-||-|--||");
ob1.getLength(f);
return 0;
}
- 一文字前と今の文字が同じならkはプラス1。
- 違っていて、なおかつ今までで最大のkだったらjにkを代入。
- s.size()で文字列の長さを返します。
