• Leetcode 541:反转字符串II


    给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

    • 如果剩余字符少于 k 个,则将剩余字符全部反转。
    • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

    解题思路:(超复杂版)

    1. public class title541 {
    2. public static void main(String[] args) {
    3. String s="a";
    4. int k=2;
    5. System.out.println(s);
    6. reverseStr(s,k);
    7. }
    8. public static String reverseStr(String s, int k) {
    9. String result="";
    10. String str1,str2;
    11. for(int i=0;i2*k){
    12. //交换前k位
    13. if(i+k
    14. str1=reverse(s,i,i+k);
    15. }else {
    16. str1=reverse(s,i,s.length());
    17. }
    18. if(i+2*k
    19. str2=findStr(s,i+k,i+2*k);
    20. }else {
    21. str2=findStr(s,i+k,s.length());
    22. }
    23. result=result+str1+str2;
    24. }
    25. return result;
    26. }
    27. public static String reverse(String s,int i,int n){
    28. //取s的第i到第n位
    29. String str="";
    30. for(int m=i;m
    31. str=str+s.charAt(m);
    32. }
    33. char[] ch=str.toCharArray();
    34. int left=0,right=ch.length-1;
    35. char temp;
    36. while (left
    37. temp=ch[left];
    38. ch[left]=ch[right];
    39. ch[right]=temp;
    40. left++;
    41. right--;
    42. }
    43. //将字符数组转化为字符串
    44. str=String.valueOf(ch);
    45. return str;
    46. }
    47. public static String findStr(String s,int i,int n){
    48. //取s的第n+1到第n位
    49. String str="";
    50. for(int m=i;m
    51. str=str+s.charAt(m);
    52. }
    53. return str;
    54. }
    55. }

  • 相关阅读:
    如何识别图片中的文字?三种方法轻松搞定
    [杂谈]-快速了解半波和全波整流
    taro整体架构简析
    Spring框架讲解笔记:spring框架学习的要点总结
    鞋3D点胶 halcon切平面算法
    LCR 051. 二叉树中的最大路径和
    AB实验--科学增长
    c++模板
    表白爱心代码
    Linux--进程间通讯--FIFO(open打开)
  • 原文地址:https://blog.csdn.net/xiao_xiao_wang_/article/details/133962992