去掉字符串中连续出现k个0的字串
2016-08-13 14:55
211 查看
A000B0000 K=3 -----> AB0000
这里注意一下:
当循环结束后,要检查下count是否等于k,如果不等于k,要把s后面的补回去
//
// main.cpp
// 去掉字符串中连续出现k个0的字串
//
// Created by zjl on 16/8/13.
// Copyright © 2016年 zjl. All rights reserved.
// A0000B000 A0000B
#include <iostream>
#include <string>
using namespace std;
void solve(string& s, int k){
int pos = -1, count = 0;
int len = s.size();
for(int i = 0; i < s.size(); i++){
if(s[i] == '0')
count++;
else{
if(count == k || count == 0){
s[++pos] = s[i];
}else{
while(count){
s[++pos] = s[i - count];
count--;
}
s[++pos] = s[i];
}
count = 0;
}
}
if(count != k && count > 0){
while(count--)
s[++pos] = s[ len - 1 - count];
}
s = s.substr(0, pos+1);
}
int main(int argc, const char * argv[]) {
// insert code here...
string s = "A0000B0000";
solve(s, 3);
cout << s<<endl;
return 0;
}
这里注意一下:
当循环结束后,要检查下count是否等于k,如果不等于k,要把s后面的补回去
//
// main.cpp
// 去掉字符串中连续出现k个0的字串
//
// Created by zjl on 16/8/13.
// Copyright © 2016年 zjl. All rights reserved.
// A0000B000 A0000B
#include <iostream>
#include <string>
using namespace std;
void solve(string& s, int k){
int pos = -1, count = 0;
int len = s.size();
for(int i = 0; i < s.size(); i++){
if(s[i] == '0')
count++;
else{
if(count == k || count == 0){
s[++pos] = s[i];
}else{
while(count){
s[++pos] = s[i - count];
count--;
}
s[++pos] = s[i];
}
count = 0;
}
}
if(count != k && count > 0){
while(count--)
s[++pos] = s[ len - 1 - count];
}
s = s.substr(0, pos+1);
}
int main(int argc, const char * argv[]) {
// insert code here...
string s = "A0000B0000";
solve(s, 3);
cout << s<<endl;
return 0;
}
相关文章推荐
- 去掉字符串中连续出现k个0的子串
- 去掉字符串中连续出现的K个0的子串
- 去掉字符串中连续出现k个0的子串
- 去掉字符串中连续出现k个0的子串
- 去掉字符串中首次连续出现k个0的子串。
- 字符串问题---去掉字符串中连续出现k个0的子串
- 去掉字符串中连续出现k个0的子串
- 去掉字符串末尾连续出现k个0的子串
- 经典笔试题——去掉字符串中连续出现K个0的子串
- 5.3 去掉字符串中连续出现k个0的子串
- [算法]去掉字符串中连续出现的k个0子串
- 求一个字符串中连续出现次数最多的字串
- 找出一行字符串中的连续出现次数最多的字串
- 后缀数组,字符串中连续出现最多的字串
- 去掉字符串当中的连续k个0,Python版
- C++实现去掉字符串中连续相同K个0子串
- 求一个字符串中连续出现次数最多的字串
- 求一个字符串中连续出现次数最多的字串 c++实现方法
- C++删除字符串中出现的连续的k个0
- 去掉字符串中出现k个0的子串