
思路:
①先对T进行遍历,记录下T中的元素及个数
②然后对S进行遍历,S即为题中定义的字母排序,那么凡是cMap[c] >=1 的,皆为在S和T中同时出现的,那么就留下这些元素,这个顺序刚好就是S的顺序,记得要把cMap[c]的值减掉
③因为全是小写字母,所以可以对ASCII码97-122的字符进行遍历,如果这个字符的cMap[c]>=1就说明是存在于T中,却不在S中的,那么这些就额外添加到result中
④最后返回result
#include<iostream>
#include<string>
#include<map>
using namespace std;
class Solution
{
public:
string customSortString(string S, string T)
{
string result = "";
map<char,int> cMap;
for(auto c:T)
cMap[c]++;
for(auto c:S)
while(cMap[c]>=1)
{
result+=c;
cMap[c]--;
}
for(char c=97; c<=122; c++)
{
while(cMap[c]>=1)
{
result+=c;
cMap[c]--;
}
}
return result;
}
};
int main()
{
Solution s;
string S = "kqep";
string T = "pekeq";
string result = "";
result = s.customSortString(S,T);
cout<<result<<endl;
return 0;
}
本文深入探讨了一种基于自定义顺序的字符串排序算法实现。通过遍历目标字符串T,记录各字符出现频率;再依据排序规则S,重新组织T中字符顺序,并补充未在S中出现但存在于T中的字符,确保输出遵循指定排序且完整保留原始信息。
791. 自定义字符串排序&spm=1001.2101.3001.5002&articleId=90796413&d=1&t=3&u=9e7ab02b219d488892ea5230d9ffd136)
9172

被折叠的 条评论
为什么被折叠?



