我正在尝试: 1)从给定的字符串中删除空格 2)从删除的空格字符串中,将空格插入到原始位置 3)最终结果应为原文。
string original =“快速的棕色狐狸跳过那只懒狗。 字符串removeSpace,withSpace;
int foo[8];
int count = 0;
cout << original << endl;
for (int i = 0; i < original.size(); i++)
{
if (char(int(original[i])) == 32)
{
foo[count] = i;
count++;
}
else
{
removeSpace += original[i];
}
}
cout << endl;
for (int i = 0; i < 8; i++)
{
cout << "Spaces at : " << foo[i] << endl;
}
cout << "==========With spaces remove==========" << endl;
cout << removeSpace << endl;
count = 0;
for (int i = 0; i < removeSpace.size(); i++)
{
if (foo[count] == i)
{
withSpace += ' ';
count++;
}
withSpace += removeSpace[i];
}
cout << "==========With spaces inserted==========";
cout << "\n" << withSpace << endl;
这就是我得到的:
quickb rownfo xjum psover thela zydo g
如何将它们插回去 “敏捷的棕狐跳过了懒狗”
答案 0 :(得分:1)
很明显,从您的输出看是什么问题。在foo
中,您要存储空格在删除任何空格之前的索引。但是,当您放回空格时,您正在将foo
与i
进行比较,foo[cout]
是删除空格后的索引 。这不是一件有意义的事情。您只需要调整算法来解决这种差异。
这是对代码的最小调整,可以解决该问题。通过将withSpace
与foo[count]
字符串的大小进行比较,我正在比较like。 withSpace.size()
和for (int i = 0; i < removeSpace.size(); i++)
{
if (foo[count] == withSpace.size())
{
withSpace += ' ';
count++;
}
withSpace += removeSpace[i];
}
都是字符串添加空格后的索引和大小。
if (char(int(original[i])) == 32)
完整代码here。
此代码
if (original[i] == ' ')
是以复杂方式完成简单事情的一个很好的例子。这样更好
const RightNav = (props) => {
return(
<div className = "rightnav">
<RightNavItem name = {home}>
<HomeSVG />
</RightNavItem>
<RightNavItem name = {profile}>
<ProfileSVG />
</RightNavItem>
.
.
.
</div>
);
};