这道题并不难,只要理解下面这句话就可以想通。
对于order的每一个字符x,要在s中寻找到每一个x,并且将它移到前面。
对于order,我们只需要遍历一次
对于s,我们需要用可以用两个标记,用下标 j 来遍历,用 l 来记录当前位置(用于交换)。
遍历order的每一个字符,记作x,寻找s中的x,当找到时 交换s[ j ] 和 s[ l ] ,并且 l 向右移动一位。
如果看到这里还没理解可以看下代码
代码附上
class Solution {
public:
string customSortString(string order, string s) {
int l=0;
for(int i=0;i<order.size();i++)
{
int j=l;
while(j<s.size())//遍历s寻找order[i]
{
if(s[j]==order[i])//找到时交换
{
swap(s[j],s[l]);
l++;//位置右移动
}
j++;
}
}
return s;
}
};