文章目录
- 🔴力扣原题:
- 🟠题目简述:
- 🟡解题思路:
- 🟢C++代码:
- 🔵结果展示:
🔴力扣原题:
力扣链接:744. 寻找比目标字母大的最小字母
🟠题目简述:
给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。
在比较时,字母是依序循环出现的。举个例子:
如果目标字母 target = ‘z’ 并且字符列表为 letters = [‘a’, ‘b’],则答案返回 ‘a’
🟡解题思路:
1.利用map进行模拟;
2.把target与letters插入map;
3.找出target下一个元素;处理元素越界,则使用第一个元素;
4.over;
🟢C++代码:
class Solution {
public:
char nextGreatestLetter(vector<char>& letters, char target) {
map<char, int> nmap;
char chRet = '0';
for(auto letter : letters)
{
nmap[letter] = letter - 'a';
}
nmap[target] = target - 'a';
map<char, int>::iterator iter;
iter = nmap.find(target);
if(iter != nmap.end())
{
if(++iter == nmap.end())
{
map<char, int>::iterator it;
it = nmap.begin();
chRet = it->first;
}
else
{
chRet = iter->first;
}
}
return chRet;
}
};
🔵结果展示: