星号是除还是乘
功能完善的代码:
#include
#include

文章插图
using namespace std;
string RemoveAllAstericks(string);
void RemoveSingleAsterick(string&,int);
bool IsDigit(char);
int main()
{
string myString="hey this is a string * this string is awesome 97 * 3=27 * this string is cool";
string newString=RemoveAllAstericks(myString);
cout << "Original: " << myString << "
【星号是除还是乘】";
cout << "Modified: " << newString << endl;
system("pause");
return 0;
}
string RemoveAllAstericks(string s)
{
int len=s.size();
int pos;
for(int i=0; i < len; i)
{
if(s[i]!='*')
continue;
pos=i - 1;
char cBefore=s[pos];
while(cBefore==' ')
{
pos--;
cBefore=s[pos];
}
pos=i1;
char cAfter=s[pos];
while(cAfter==' ')
{
pos;
cAfter=s[pos];
}
if( IsDigit(cBefore) && IsDigit(cAfter) )
RemoveSingleAsterick(s,i);
}
return s;
}
void RemoveSingleAsterick(string& s,int i)
{
s[i]=' '; // Replaces * with a space,but you can do whatever you want
}
bool IsDigit(char c)
{
return (c<=57 && c >=48);
}
顶尖简述:
代码检索字符串数组直至碰到*.随后,它查询*以前和以后的第一个非空白字符.假如2个标识符全是数据,则代码明确它是乘法运算,并删掉星号.不然,它将被星号是除還是乘忽视.
假如您必须别的详细资料,客户程序此贴子的修定历史数据.
关键手记:
>您应当用心考虑到在字符串数组上加上界限查验(即,不必试着浏览低于0或超过len的数据库索引
>假如您担忧括弧,请变更查验空格符的标准以查验括弧.
>查验每一个标识符是不是全是数据是一个坏主意.最少,它必须2次逻辑性查验(参照我的IsDigit()涵数). (我的代码查验’*’,这是一个逻辑性实际操作.)殊不知,公布的一些提议十分槽糕.不必应用正则表达式来查验标识符是不是为数据.
即然你一直在难题中提及了高效率,并且也没有充足的意味着点来评价别的回答:
查验’0”1”2’…的switch句子代表着每一个并不是数据的标识符务必历经10次逻辑性实际操作.请充足重视,由于标识符投射到整数金额,只需查验界限(标识符<='9'&& char>=’0′)
- 漫画你是少女一迅社(你是少女漫画无修改)
- 男女有别是指什么有不同(男女有别16条)
- 肠镜检查|三个症状不断出现,十有八九是大肠癌,最好去检查一下
- 孕期|怀孕时,婆婆该“出钱”还是该“出力”?孕妈最有发言权
- 西兰花|如果你怀孕了,常吃这5种食物,能清除体内垃圾毒素,胎儿发育好
- 孕妈|临近预产期,每周一次的胎心监护做还是不做?认识到这两点很重要
- 妈妈|孕期有6种情况表明可能怀的是男宝,中三条以上的,迎接小王子吧
- 穿山甲|新一届的孕妈迷信行为大赏,第一个就是重灾区
- 赵英俊是薛之谦制作人(创作鬼才赵英俊)
- 症状|“胎毒”是什么?有必要去“胎毒”吗?
