表示数字 (字符串替换C++)
2016-12-28 11:30
232 查看
题目
描述
将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变public static String MarkNum(String pInStr)
{
return null;
}
输入
输入一个字符串输出
字符中所有出现的数字前后加上符号“*”,其他字符保持不变样例输入
Jkdi234klowe90a3样例输出
Jkdi*234*klowe*90*a*3*代码
1.一个一个插入
#include <iostream> #include <string> using namespace std; int main() { string str; //输入字符串 cin>>str; //获取长度 int length=str.size(),i=0,k=0; while(i<length) { k=i; //找到第一个数字 while (!isdigit(str[k])) { k++; } str.insert(k,"*");//在数字前插入“*” length++;//增加长度 k=k+2;//向后偏移两个(包括*) //找最后一个数字 while (isdigit(str[k])) { k++; } str.insert(k,"*"); length++; i=k+2; } cout<<str<<endl; }
2.先记录数字的位置,然后统一替换。
#include <iostream> #include <string> using namespace std; int main() { string str; //输入字符串 cin>>str; //获取长度 int length=str.size(),start=0,endPos=0; while(start<length) { //找到第一个数字 while (!isdigit(str[start])) { start++; } //找最后一个数字 endPos=start+1; while (isdigit(str[endPos])) { endPos++; } str.insert(endPos,"*"); str.insert(start,"*"); length+=2; start=endPos+3;//由于2个*,因此再向后移一位 } cout<<str<<endl; }
3.重新构造新的字符串
注意考虑 数字开头/字母结尾测试用例
因为前两个对原字符串进行操作(不会出现数组越界),而对于新字符串来说容易数组越界。
#include <iostream> #include <string> #include <vector> using namespace std; int main() { string str,subStr; vector<string> vec; //输入字符串 cin>>str; //获取长度 int length=str.size(),start=0,endPos=0; while(start<length) { subStr=""; //找到第一个数字 while (!isdigit(str[start])&&(start<length)) { subStr.push_back(str[start]);//顺序很重要 start++; } vec.push_back(subStr); subStr=""; //找最后一个数字 endPos=start; while (isdigit(str[endPos])&&(endPos<length)) { subStr.push_back(str[endPos]); endPos++; } subStr = str.substr(start,endPos-start); if(subStr!="") { subStr.insert(0,"*"); subStr.push_back('*'); } vec.push_back(subStr); start=endPos;//为了判断hile } str=""; for(vector<string>::iterator iter=vec.begin(); iter!=vec.end(); ++iter) { str+=(*iter); } cout<<str<<endl; }
相关文章推荐
- C++ <替换字符串中的数字>
- c/c++ 数字转成字符串, 字符串转成数字
- c/c++ 数字转成字符串, 字符串转成数字
- C++字符数组表示字符串--易错标识
- c++ 输入字符串,输出数字
- C++字符串转化为数字的库函数
- 2个32位数字表示的10进制数值转化成字符串
- 将阿拉伯数字表示的金额转换为大写金额字符串
- 【面试题目】-C++中判断字符串是否全部由数字组成
- C++ 数字转字符串 字符串转数字
- string替换所有指定字符串(C++)
- C/C++面试之算法系列--如何实现用更少的空间表示英文字母(a ~ z)构成char A[n]字符串
- C++ 字符串替换
- 用c++实现类似vb的replace字符串替换
- C++下的数字和字符串间的转换
- 字符串提取替换后再替换回去 和 函数将数字转换中文数字
- C++的中英文字符串表示(string,wstring)
- [c++]字符串替换函数
- C++的中英文字符串表示(string,wstring)
- C++实现的文本字符串替换功能