当前位置: 首页 > article >正文

258.反转字符串中的单词

方法一:

public class Solution {
    public String reverseWords(String s) {
        if(s.length()==1&&!s.equals(" ")){
            return s;
        }
        List<String> res=new ArrayList<>();
        int start=0;
        for(int i=1;i<s.length();i++){
            if(s.charAt(i)!=' '&& s.charAt(i - 1)==' '){
                start=i;
            }
            if(s.charAt(i-1)!=' '&&s.charAt(i)==' '){
                res.add(s.substring(start,i));
            }
            if(i==s.length()-1&&s.charAt(i)!=' '){
                res.add(s.substring(start,i+1));
            }
        }
        Collections.reverse(res);
        return String.join(" ", res);
    }
}
class Solution(object):
    def reverseWords(self, s):
        if len(s)==1 and s!=" ":
            return s
        res=list()
        start=0
        for i in range(1,len(s)):
            if s[i]!=" " and s[i-1]==" ":
                start=i
            if s[i-1]!=" " and s[i]==" ":
                res.append(s[start:i])
            if i==len(s)-1 and s[i]!=" ":
                res.append(s[start:i+1])
        res.reverse()
        return " ".join(res)

方法二:

public class Solution {
    public String reverseWords(String s) {
        // 使用 split 方法将字符串按空格分割成单词数组
        // 注意:split 方法会处理多余的空格
        String[] words = s.trim().split("\\s+");
        // 使用双指针反转单词数组
        int left = 0, right = words.length - 1;
        while (left < right) {
            String temp = words[left];
            words[left] = words[right];
            words[right] = temp;
            left++;
            right--;
        }
        // 使用 String.join 将单词数组拼接成字符串
        return String.join(" ", words);
    }
}
class Solution(object):
    def reverseWords(self, s):
        # 先反转整个句子,然后反转其中的每个单词
        # 空间复杂度为O(1)的解法
        words = s.split()
        left, right = 0, len(words) - 1
        while left < right:
            words[left], words[right] = words[right], words[left]
            left += 1
            right -= 1
        return " ".join(words)


http://www.kler.cn/a/585000.html

相关文章:

  • 【每日学点HarmonyOS Next知识】span问题、组件标识属性、属性动画回调、图文混排、相对布局问题
  • Linux 部署Java应用程序
  • OpenCV实现图像分割与无缝合并
  • FORTRAN语言的数据结构
  • GStreamer —— 2.17、Windows下Qt加载GStreamer库后运行 - “播放教程 5:色彩平衡“(附:完整源码)
  • FastJSON与Java序列化:数据处理与转换的关键技术
  • Python爬虫实战:基于 Scrapy 框架的腾讯视频数据采集研究
  • 『Rust』Rust运行环境搭建
  • Linux笔记之通配符和正则表达式的区别
  • cocos creator 3.8如何在代码中打印drawcall,fps
  • Matlab 灰度质心法提取条纹中心线
  • Git的详细使用方法
  • 基于stm32的视觉物流机器人
  • 智慧城市新基建!图扑智慧路灯,点亮未来城市生活!
  • AWS云编排详解-Cloud Formation
  • 一文讲清楚CUDA与PyTorch、GPU之间的关系
  • Gemini Robotics:Google DeepMind 让 AI 机器人真正“动”起来!
  • 深度学习——Diffusion Model学习,扩散模型
  • 编程助手学Python--Deepseek对OpenAI的Python库调用GPT-4模型生成对话回复理解
  • 解决启动Vue项目时遇到的 error:0308010C:digital envelope routines::unsupported 错误