Java13_反转字符串中的单词 III(方法二String转换成字符数组)

反转字符串中的单词 III


给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入:s = "Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"
示例 2:

输入: s = "Mr Ding"
输出:"rM gniD"
 

提示:

1 <= s.length <= 5 * 104
s 包含可打印的 ASCII 字符。
s 不包含任何开头或结尾空格。
s 里 至少 有一个词。
s 中的所有单词都用一个空格隔开。
相关标签

Java

作者:LeetCode
链接:https://leetcode.cn/leetbook/read/array-and-string/c8su7/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


方法二String转换成字符数组

class Solution {
    public static void jiaohuan(char[] s1,int first,int last) {
		char temp=' ';
		while(first<last) {
			temp=s1[first];
			s1[first]=s1[last];
			s1[last]=temp;
			first++;
			last--;
		}
	}
	
	public static String reverseWords(String s) {
		char[] s1=s.toCharArray();
		int len=s.length();
		int slow=0,fast=0;
		while(true) {
			if(fast+1==len) {
				jiaohuan(s1, slow, fast);
                String s2=new String(s1);
				return s2;
			}
			else if(s1[fast+1]==' ') {
				jiaohuan(s1, slow, fast);
				slow=fast+2;
			}
			fast++;
			
		}
		
    }
	
}

测试


package Day3_19;
import java.util.*;
import java.lang.String;

public class Test_13 {
	
	public static void jiaohuan(char[] s1,int first,int last) {
		char temp=' ';
		while(first<last) {
			temp=s1[first];
			s1[first]=s1[last];
			s1[last]=temp;
			first++;
			last--;
		}
	}
	
	public static String reverseWords(String s) {
		char[] s1=s.toCharArray();
		int len=s.length();
		int slow=0,fast=0;
		while(true) {
			if(fast+1==len) {
				jiaohuan(s1, slow, fast);
				String s2=new String(s1);
				return s2;
				//return s1.toString();//得到的是“[C@cb0ed20”
			}
			else if(s1[fast+1]==' ') {
				jiaohuan(s1, slow, fast);
				slow=fast+2;
			}
			fast++;
			
		}
		
    }
	

	
	public static void main(String[] args ) {
	String s="Let's take LeetCode contest";
	System.out.println(reverseWords(s));

	}
	
}



虽然使用第一种方法,将String改为StringBuilder耗费了很多时间,但也让我明白了自身的不足,并且对各方面勇于尝试、学习。在使用将String转换成字符数组时思路非常顺畅,手到擒来!✌

不过还是对于,字符数组和字符串的相互转换不太熟练

如果是学习的话,多尝试未涉及的领域;如果是考试的话,那就选择自己熟练掌握的方法~

官方详解

class Solution {
    public String reverseWords(String s) {
        char[] chars = s.toCharArray();
        int prevSpaceIndex = -1;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == ' ') {
                reverse(chars, prevSpaceIndex + 1, i - 1);
                prevSpaceIndex = i;
            }
        }
        reverse(chars, prevSpaceIndex + 1, chars.length - 1);
        return new String(chars);
    }

    private void reverse(char[] chars, int left, int right) {
        while (left < right) {
            char temp = chars[left];
            chars[left++] = chars[right];
            chars[right--] = temp;
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/274201.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java的图书管理系统,确实有两把斧子 ! ! !

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

网络——入门基础

目录 协议 网络协议 OSI七层模型 网络传输基本流程 网络传输流程图 局域网通信 数据包的封装和解包 广域网通信 网络地址管理 IP地址 MAC地址 协议 关于什么是局域网&#xff0c;什么是广域网&#xff0c;我这里就不过多赘述了&#xff0c;我们直接来谈一下什么…

HarmonyOS NEXT应用开发—投票动效实现案例

介绍 本示例介绍使用绘制组件中的Polygon组件配合使用显式动画以及borderRadius实现投票pk组件。 效果预览图 使用说明 加载完成后会有一个胶囊块被切割成两个等大的图形来作为投票的两个选项&#xff0c;中间由PK两字分隔开点击左边选项&#xff0c;两个图形会随着选择人数…

HarmonyOS NEXT应用开发之多文件下载监听案例

介绍 多文件下载监听在应用开发中是一个非常常见的需求。本示例将介绍如何使用request上传下载模块实现多文件下载监听&#xff0c;如监听每个文件下载任务的进度&#xff0c;任务暂停&#xff0c;下载完成等下载情况。每个应用最多支持创建10个未完成的任务&#xff0c;相关规…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Toggle)

组件提供勾选框样式、状态按钮样式及开关样式。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 仅当ToggleType为Button时可包含子组件。 接口 Toggle(options: { type: ToggleType, is…

sparksql简介

什么是sparksql sparksql是一个用来处理结构话数据的spark模块&#xff0c;它允许开发者便捷地使用sql语句的方式来处理数据&#xff1b;它是用来处理大规模结构化数据的分布式计算引擎&#xff0c;其他分布式计算引擎比较火的还有hive&#xff0c;map-reduce方式。 sparksql…

mysql查询条件包含IS NULL、IS NOT NULL、!=、like %* 、like %*%,不能使用索引查询,只能使用全表扫描,是真的吗???

不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL、IS NOT NULL、!、like %* 、like %*%,不能使用索引查询&#xff0c;只能使用全表扫描。 刚入行时我也是这么认为的&#xff0c;还奉为真理&#xff01; 但是时间工作中你会发现还是走索引…

bitset详解

本文旨在讲解位图的原理&#xff0c;以及位图有什么作用&#xff0c;如何实现位图。希望读完本篇文章能对小伙伴们有一定的收获&#xff01;上干货&#xff01; 什么是位图 位图就是bitmap的缩写&#xff0c;所谓bitmap&#xff0c;就是用每一位来存放某种状态&#xff0c;适用…

代理IP品质对Tik Tok代理的重要性

随着Tik Tok的迅速崛起&#xff0c;越来越多的人开始关注如何透过Tik Tok进行行销和推广。其中&#xff0c;使用Tik Tok代理程式是常见的方法。 然而&#xff0c;在选择和使用代理时&#xff0c;IP品质是一个不可忽视的因素。本文将探讨IP品质对Tik Tok代理的重要性&#xff0…

架起桥梁,畅享流通:如何使用私有Registry实现镜像跨源同步与管理

在Docker容器化世界中&#xff0c;镜像作为构建和运行应用的基础单元&#xff0c;其管理与分发对于企业级应用至关重要。私有Registry作为存储和管理Docker镜像的中心仓库&#xff0c;不仅可以保障企业数据的安全性&#xff0c;更能通过镜像同步功能实现跨源镜像的统一管理和高…

R语言中的常用基础绘图函数 直方图,箱线图,条形图,散点图

目录 R语言中的绘图参数 绘图函数 1.plot函数绘制散点图 2.hist函数绘制直方图 如何修饰直方图? 如何在直方图上标注各组频数&#xff1f; 使用text函数把某些信息标注在直方图上 如何在直方图上添加概率密度曲线&#xff1f; 3.boxplot函数绘制箱线图 4.barplot函数…

代码随想录算法训练营 DAY 14 | 二叉树的递归遍历和迭代遍历

二叉树基础 种类 满二叉树&#xff1a;深度为k&#xff0c;有2^k-1个节点的二叉树 完全二叉树&#xff1a;除了最底层可能没满&#xff0c;且都在靠左侧 优先级队列其实是一个堆&#xff0c;堆就是一棵完全二叉树&#xff0c;同时保证父子节点的顺序关系。 二叉搜索树&…

中间件-消息队列

消息队列基础知识 什么是消息队列 本处提到的消息队列是指各个服务以及系统组件/模块之间的通信&#xff0c;属于一种中间件。参与消息传递的双方称为生产者和消费者&#xff0c;生产者负责发送消息&#xff0c;消费者负责处理消息。 消息队列作用 通过异步处理&#xff0…

git的起源

开篇一张图&#xff1a; 开源项目linux kernel开发&#xff0c;参与开发与维护者众多。1991至2005年期间绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。 在2002 年&#xff0c;整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维…

JavaScript中new操作符具体干了什么

文章目录 一、是什么二、流程三、手写new操作符 一、是什么 在JavaScript中&#xff0c;new操作符用于创建一个给定构造函数的实例对象 例子 function Person(name, age){this.name name;this.age age; } Person.prototype.sayName function () {console.log(this.name) …

【LIMS】微服务

目录 一、服务解决方案-Spring Cloud Alibaba1.1选用原因&#xff08;基于Spring Cloud Alibaba的试用场景&#xff09;1.2 核心组件使用前期规划 部署 nacos部署 mino使用JavaFreemarker模板引擎&#xff0c;根据XML模板文件生成Word文档使用JavaFlowable 工作流引擎前端 -vue…

前端项目,个人笔记(三)【Vue-cli - api封装-axios使用举例】

目录 前言 1、axios配置与测试 1.1、配置 1.2、测试 2、使用axios案例-渲染header 3、Pinia优化重复请求 3.1、为什么&#xff1f; 3.2、使用Pinia优化代码步骤 步骤一&#xff1a;在main.js中创建 Pinia 实例&#xff0c;并将其作为插件添加到 Vue 应用中 步骤二&am…

golang面试题总结

零、go与其他语言 0、什么是面向对象 在了解 Go 语言是不是面向对象&#xff08;简称&#xff1a;OOP&#xff09; 之前&#xff0c;我们必须先知道 OOP 是啥&#xff0c;得先给他 “下定义” 根据 Wikipedia 的定义&#xff0c;我们梳理出 OOP 的几个基本认知&#xff1a; …

sparksession对象简介

什么是sparksession对象 spark2.0之后&#xff0c;sparksession对象是spark编码的统一入口对象&#xff0c;通常我们在rdd编程时&#xff0c;需要SparkContext对象作为RDD编程入口&#xff0c;但sparksession对象既可以作为RDD编程对象入口&#xff0c;在sparkcore编程中可以通…

Linux 建立链接(ln)

目录 1、ln命令 创建软链接&#xff1a; 创建硬链接&#xff1a; 2、输出重定向&#xff08;>/>>&#xff09; 3、管道&#xff08;|&#xff09; 1、ln命令 &#xff08;英文全拼&#xff1a;link files&#xff09;为某一个文件在另外一个位置建立一个同步的…
最新文章