海口智能建站价格国外服务器租用价格
news/
2025/9/23 19:34:12/
文章来源:
海口智能建站价格,国外服务器租用价格,php做的网站处理速度怎么样,平湖公司做网站Description
给你一个字符串str#xff0c;字符串中的字母都已按照升序排序#xff0c;且只包含小写字母。另外给出一个目标字母target#xff0c;请你寻找在这一有序字符串里比目标字母大的最小字母。 在比较时#xff0c;字母是依序循环出现的。例如#xff0c;str“ab…Description
给你一个字符串str字符串中的字母都已按照升序排序且只包含小写字母。另外给出一个目标字母target请你寻找在这一有序字符串里比目标字母大的最小字母。 在比较时字母是依序循环出现的。例如str“ab”target‘z’则答案为’a’。 字符串str至少包含了两个不同的字母。 target是一个小写字母。 要求必须使用二分查找来解题。
Input
第一行输入t表示有t个测试样例。 第二行起每一行首先输入一个字符串str接着输入目标字母target。 以此类推共输入t个测试样例。 接收字符串可以使用#include string str; cinstr;
Output
每一行输出字符串中比目标字母大的最小字母。 以此类推共输出t行。
Sample
#0
Input
7
abcd a
abcd b
acegi r
abce c
aaaabbbbbccc b
aaaaabbbbbccccceeeee c
aaabbcccddd zOutput
b
c
a
e
c
e
aHint
2 str.length() 10000000
解题思路
需要考虑的细节是二分查找后如果压缩出来的这个字母仍然比target小怎么办 则说明此时已经查找到了字符串中的最后一个字母下标不一定是最后一个那就在函数的结尾加上一个判断即可如果此时的字符仍然比target小因为字符是循环出现所以就跳转回第一个字符
AC代码
#includeiostream
#includecstring
#includealgorithm
#includestring
using namespace std;
const int N 101;char target;
string str;
bool check(int x)
{return str[x]-97 target-97;
}
char StrBinarySearch()
{int l, r;l 0, r str.length()-1;while (l r){int mid l r1;if (check(mid))r mid;else l mid 1;}if ((l str.length() - 1 || str[l] str[str.length() - 1]) str[l] target)l 0;return str[l];
}
int main()
{int t;cin t;while (t--){cin str target;cout StrBinarySearch() endl;}return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913644.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!