9.8号JD笔试

ゝ一世哀愁。 2022-06-08 00:23 165阅读 0赞

编程题

给定一个字符串s,请计算输出含有连续两个s 作为子串的最短字符串。注意两个字符串可能会有重叠部分。例如:“ababa”含有两个“aba”。

输入用例:abracadabra

输出结果:abracadabracadabra

实现代码:

  1. #include<iostream>
  2. #include<string>
  3. using namespace std;
  4. int main(){
  5. string s;
  6. int i,j,cnt,len;
  7. while(cin>>s){
  8. string temp(s);
  9. string result;
  10. len=s.size();
  11. //当输入字符串个数只长度为1时
  12. if(len==1){
  13. result+=s;
  14. result+=s;
  15. cout<<result<<endl;
  16. result.clear();
  17. }
  18. else{
  19. //当输入字符串大于1时
  20. //判断字符串最后面有无子串与字符串最前面的子串重合
  21. for(i=0,j=len/2;i<len&&j<len;){
  22. if(s[i]==s[j]){
  23. i++;
  24. j++;
  25. }
  26. else{
  27. j++;
  28. if(i!=0)
  29. i--;
  30. }
  31. }
  32. //没有重合情况
  33. if(i==0)
  34. {
  35. result+=temp;
  36. result+=temp;
  37. cout<<result<<endl;
  38. temp.clear();
  39. result.clear();
  40. }
  41. else{
  42. //有重合情况
  43. cnt=i+1;
  44. len=len-cnt;
  45. for(i=0;i<=len;i++)
  46. result=result+s[i];
  47. result=result+temp;
  48. cout<<result<<endl;
  49. temp.clear();
  50. result.clear();
  51. }
  52. }
  53. }
  54. return 0;
  55. }

发表评论

表情:
评论列表 (有 0 条评论,165人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JD

    具有 3 年以上 C 语言编程经验 , 熟悉一种汇编语言 . • 熟悉软件工程的开发过程 , 具有大型软件的开发调试经验 • 熟悉一种以上单片机的架构和指令体系 ,

    相关 嵌入式方向JD

    ——偏应用: 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 职

    相关 9.8JD笔试

    编程题 给定一个字符串s,请计算输出含有连续两个s 作为子串的最短字符串。注意两个字符串可能会有重叠部分。例如:“ababa”含有两个“aba”。 输入用例:abracad