Java 字符串反转实现代码
作者:lqh 发布时间:2023-01-09 10:04:52
标签:Java,字符串反转
Java 字符串反转
问题:
给一个字符串,比如 “I love china”, 把字符反转后变成 “china love I”
思路:
先把字符串从第一个字符与最后一个字符对换,第二个字符和倒数第二个字符对换,这样,我们就把每一个单词位置互换了。但是我们要求单词里面字符的顺序是不能变的,所以,我们要把每一个单词里面的字符从头到尾对换一下。这样就可以得到我们想要的字符串了。
实现:
因为这里两次都会用到字符反转,所以我们就单独写一个swap的方法出来。我们对每个单词进行发转的时候,需要记录每个单词的起始点和结束点,对于第一个单词,起始点是0,最后一个单词,结束点是string.length() - 1。而中间的单词,开始点和结束点是空格的位置。
代码如下:
package test;
public class StringReverse{
public static void swap(char[] arr,int begin,int end){//将字符反转
while(begin<end){
char temp=arr[begin];
arr[begin]=arr[end];
arr[end]=temp;
begin++;
end--;
}
}
public static String reverseWords(String st){
int begin=0;
char[] arr=st.toCharArray();
swap(arr,0,arr.length-1);
for(int i=1;i<arr.length;i++){ //将字符里面的每个单词再反转
if(arr[i]==' '){
swap(arr,begin,i-1);
begin=i+1;
}
}
swap(arr,begin,arr.length-1); //最后的一个单词反转
return new String(arr);
}
public static void main(String[] args){
String s="I love you !";
StringReverse sr=new StringReverse();
String st=sr.reverseWords(s);
System.out.println(st);
}
}
StringReverse.java
利用JDK提供的方法:
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
String[] sArr=str.split(" ");
List<String> list=new ArrayList<String>();
list=Arrays.asList(sArr);
Collections.reverse(list);
for(String word:list){
System.out.print(word+" ");
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/jsqfengbao/article/details/44980551


猜你喜欢
- Gradle修改默认的Build配置文件名Gradle默认使用build.gradle作为默认的配置文件文件名。如果我们在build.gra
- 经测试,是环绕通知改变了返回值,切面方法需要有返回值,来代替被代理方法返回结果改成如下即可:@Around("point_upda
- 本文实例讲述了java实现word文档转pdf并添加水印的方法。分享给大家供大家参考,具体如下:前段时间,项目需要自动生成word文档,用W
- 本文介绍了Spring Boot Admin监控服务上下线邮件通知,分享给大家,具体如下:微服务架构下,服务的数量少则几十,多则上百,对服务
- 微信聊天窗口的信息效果类似iphone上的短信效果,以气泡的形式展现,在Android上,实现这种效果主要用到ListView和BaseAd
- java中Path是什么?在计算机上安装Java后,需要设置PATH环境变量以便从任何目录方便地运行可执行文件(javac.exe,java
- 概念在Java中,对象的生命周期包括以下几个阶段:创建阶段(Created)应用阶段(In Use)不可见阶段(Invisible)不可达阶
- 本文实例为大家分享了Java实现酒店客房管理系统的具体代码,供大家参考,具体内容如下LoginFrame.javapackage login
- 在application.xml加上以下配置mybatis-plus.configuration.map-underscore-to-cam
- 突然对悬浮窗体感兴趣,查资料做了个小Demo,效果是点击按钮后,关闭当前Activity,显示悬浮窗口,窗口可以拖动,双击后消失。效果图如下
- 这个例子用于演示在Spring Boot应用中如何验证Web 应用的输入,我们将会建立一个简单的Spring MVC应用,来读取用户输入并使
- 该方法把该字符串转换成一个新的字符数组。 String str="abcdefg"; char a[]; a=str.t
- 什么是建造者模式建造者模式( Builder Pattern )是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以
- 这篇文章主要介绍了Java判断主机是否能ping通代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- synchronized 和 Reentrantlock多线程编程中,当代码需要同步时我们会用到锁。Java为我们提供了内置锁(synchr
- 目录概要独立文件专属文件internal storageexternal storage概要当我们查看手机的文件管理器的时候,会发现里面的文
- 本文实例讲述了Android实现捕获TextView超链接的方法。分享给大家供大家参考,具体如下:这里分享一篇捕获TextView超链接的文
- C#编写的简单数字图像处理程序,数字图像处理的平时成绩和编程作业竟然占50%,那就把最近做的事写个札记吧。先放个最终做成提交的效果看看:1.
- 前言集合就是一组数的集合,就像是一个容器,但是我们应该清楚的是集合中存放的都是对象的引用,而不是真正的实体。而我们常说的集合中的对象其实指的
- 介绍写给刚刚入坑 Java 的各位,无论你是计算机领域从业者,亦或是科班出身的专业人才。当然也包括我在内,Hello World 相信大家都