C++编程:连续的字符替换成“连续出现的个数+字符”

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/RogersStar/article/details/65030726

问题描述:

给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。

这是网易17年雷火面试第一题,直接复制如下代码进入测试时会出错,注释掉main函数中的第四行(cout << "请输入一串大写字符串" << endl;)就可通过编译。


代码如下:

#include<iostream>
#include <string> 
using namespace std;


int main()
{

string str;

string new_str;
size_t sz,str_length;


cout << "请输入一串大写字符串" << endl;
cin >> str;


//判断字符串的大写
str_length = str.length();

for (size_t i = 0; i<str_length; i++)
{
if (str.substr(i, 1) < "A" || str.substr(i,1)> "Z")
{
cout << "wrong input" << endl;
return -1;
}
}

while (str != "\0")
{
sz = 1;
int j = 1;
while (str.substr(0, 1) == str.substr(j, 1))
{
sz++;
j++;
}
string temp = to_string(sz);
new_str = new_str + temp +str.substr(0, 1);
str = str.substr(sz, str.length() - sz);
}
cout << new_str << endl;


return 0;
}


收获:

1.程序中用到string类型的相关数据要加上#include<string>

2.获取字符串长度的函数str.size()和str.length()都可以,得到的数据类型都是size_t

3.获取字符串子串的函数str.substr(poi,length),第一个参数为子串的其实位置,第二个参数为子串长度

4.其他类型转string类型用函数to_string(int i)

展开阅读全文

没有更多推荐了,返回首页