网站做公司简介怎么做,项目vi设计公司,网站优化排名公司,京东购物中心目录 题目解法一解法二如何比较字符串letters.back()*upper_bound为什么要加* 题目
给你一个字符数组 letters#xff0c;该数组按非递减顺序排序#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。
返回 letters 中大于 target 的最小的字符。如果不存在这… 目录 题目解法一解法二如何比较字符串letters.back()*upper_bound为什么要加* 题目
给你一个字符数组 letters该数组按非递减顺序排序以及一个字符 target。letters 里至少有两个不同的字符。
返回 letters 中大于 target 的最小的字符。如果不存在这样的字符则返回 letters 的第一个字符。
解法一
class Solution {
public:char nextGreatestLetter(vectorchar letters, char target) {int l0;int rletters.size()-1;if(letters[r]target){return letters[l];}while(lr){int midl(r-l)/2;if(letters[mid]target){rmid;}else if(letters[mid]target){lmid1;}}return letters[l];}
};解法二
class Solution {
public:char nextGreatestLetter(vectorchar letters, char target) {return target letters.back() ? *upper_bound(letters.begin(), letters.end() - 1, target) : letters[0];}
};
如何比较字符串
直接大于小于号就可以
letters.back()
letters.back() 是 C 中 std::vector 的成员函数用于返回容器中最后一个元素的引用。back() 函数没有参数它直接返回最后一个元素不会对容器进行修改。
upper_bound为什么要加
*upper_bound 是为了获取 upper_bound 函数返回的迭代器指向的元素的值。upper_bound 函数返回的是一个迭代器指向第一个大于给定值的元素。
在这段代码中* 是用于解引用迭代器的操作符。通过解引用操作符 *我们可以获取迭代器指向的元素的值。
所以*upper_bound(letters.begin(), letters.end() - 1, target) 表示获取 upper_bound 函数返回的迭代器指向的元素的值即大于 target 的最小元素。
在这个特定的代码片段中return 语句将返回大于 target 的最小元素作为函数的返回值。 用于获取解析的元素值返回