枢覆引 发表于 2025-6-8 22:06:35

算法day08-字符串篇(2)

目录


[*]反转字符串中的单词
[*]找出字符串中第一个匹配项的下标
[*]重复的子字符串
一、反转字符串中的单词


   主要思路:把整个字符串的头尾的空格先去掉,然后根据” ”来划分字符串数组,将字符串倒着放进结果中。
class Solution {
    public String reverseWords(String s) {
      String[] parts = s.trim().split("\\s+");      //去掉首尾空格
      StringBuilder sb = new StringBuilder();
      for(int i = parts.length-1; i>=0; i--){
            if(i == 0){
                sb.append(parts);
            }else{
                sb.append(parts);
                sb.append(" ");
            }
      }
      return sb.toString();
    }
}
//时间复杂度:O(n)
//空间复杂度:O(n) 
二、右旋转字符串


 
class Main{
    public static void main(String[] args){
      Scanner in = new Scanner(System.in);
      int n = in.nextInt();
      in.nextLine();
      String s = in.nextLine();
      int p1 = s.length() - n;      //要右旋的起点
      int p2 = 0;
      StringBuilder sb = new StringBuilder();
      while(p1 < s.length()){
            sb.append(s.charAt(p1));
            p1++;
      }
      while(p2 < s.length() - n){
            sb.append(s.charAt(p2));
            p2++;
      }
      System.out.print(sb);
    }
}
//时间复杂度:O(N)
//空间复杂度:O(N) 
三、找出字符串中第一个匹配项的下标


   主要思路:在原字符串的每一个位置都截取一段子字符串来判断是否和needle相等。
class Solution {
    public int strStr(String haystack, String needle) {
      if(needle.length()==0){
            return 0;
      }
      if(needle.length() > haystack.length()){
            return -1;
      }
      for(int i=0; i<=haystack.length() - needle.length(); i++){
            if(haystack.substring(i, i+needle.length()).equals(needle)){
                return i;
            }
      }
      return -1;
    }
}
//时间复杂度:O((n-m+1)*m)
//空间复杂度:O(1)// 时间复杂度:O(n),其中 n 是字符串的长度,KMP 构造 next 数组只需要一次线性扫描。
// 空间复杂度:O(n),用于存储前缀表 next[]。
 

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

韩素欣 发表于 2025-11-6 10:57:13

感谢分享

赶塑坠 发表于 2025-11-13 03:33:00

谢谢楼主提供!

染罕习 发表于 2025-11-28 20:58:17

喜欢鼓捣这些软件,现在用得少,谢谢分享!

坏级尹 发表于 2025-12-11 13:56:29

前排留名,哈哈哈

廖雯华 发表于 2025-12-17 22:33:48

感谢发布原创作品,程序园因你更精彩

威割 发表于 2025-12-28 18:54:03

yyds。多谢分享

貊淀 发表于 2026-1-4 13:19:13

新版吗?好像是停更了吧。

盒礁泅 发表于 2026-1-12 03:36:56

东西不错很实用谢谢分享

懵崭 发表于 2026-1-18 15:01:56

感谢分享

挺喽蹂 发表于 2026-1-19 23:44:22

前排留名,哈哈哈

悯拄等 发表于 2026-1-22 10:54:48

谢谢楼主提供!

豌笆 发表于 2026-1-22 12:26:33

收藏一下   不知道什么时候能用到

袁可佳 发表于 2026-1-24 15:03:45

感谢分享,学习下。

济曝喊 发表于 2026-1-27 08:39:24

感谢发布原创作品,程序园因你更精彩

即息极 发表于 2026-1-29 08:09:55

谢谢分享,辛苦了

拓炊羡 发表于 2026-1-30 03:57:15

东西不错很实用谢谢分享

劳暄美 发表于 2026-1-30 06:06:45

这个有用。

袁曼妮 发表于 2026-2-2 08:18:55

感谢分享,下载保存了,貌似很强大

痨砖 发表于 2026-2-4 09:23:58

谢谢分享,试用一下
页: [1] 2
查看完整版本: 算法day08-字符串篇(2)