字符串翻转算法-JAVA
来源:互联网 发布:站群软件 编辑:程序博客网 时间:2024/05/21 10:43
单词翻转
问题描述:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。例如,输入“I am a student.”,则输出“student. a am I”。
算法分析
首先第一步反转.tneduts a ma I,然后以空格为界,逐个单词反转,最后输出student. a am I,时间复杂度O(n),空间复杂度O(1)
Java代码
/** * Created by billJiang on 2016/10/21. */public class TestReverseString { public static void main(String[] args) { String str="I am a student."; char[] chars=str.toCharArray(); //first reverse reverse(chars,0,chars.length-1); System.out.println(String.valueOf(chars)); //second reverse int start=0,end; for (int i = 0; i <chars.length ; i++) { if(chars[i]==' '){ end=i-1; reverse(chars,start,end); start=i+1; }else if(i==chars.length-1){ reverse(chars,start,i); } } System.out.println(String.valueOf(chars)); } public static void reverse(char[] chars,int start,int end){ while(start<end){ char temp=chars[start]; chars[start++]=chars[end]; chars[end--]=temp; } }}
链表翻转
问题描述
给出一个链表和一个数k,比如,链表为1→2→3→4→5→6,
若k=2,翻转后 2→1→6→5→4→3,
若k=3,翻转后 3→2→1→6→5→4,
若k=4,翻转后 4→3→2→1→6→5,
用程序实现
算法分析
以第k-1个数字为界,拆分两部分,分别反转,时间复杂度O(n),空间复杂度O(1)
Java代码
以数组形式来表示链表
重新排序方式
import java.util.Scanner;/** * Created by billJiang on 2016/10/20. */public class TestLinkListReverse { public static void main(String[] args) { int[] num = {1, 2, 3, 4, 5, 6}; System.out.println("Enter a number(1-6):"); Scanner sc = new Scanner(System.in); int k = sc.nextInt(); if(k>num.length||k<1) { System.out.println("invalid number"); return; } reverseArr(num,0,k-1); reverseArr(num,k,num.length-1); //result output for (int i = 0; i <num.length ; i++) { if(i<num.length-1) System.out.print(num[i]+"->"); else System.out.print(num[i]); } } public static int[] reverseArr(int[] num,int start,int end){ while(start<end){ int temp=num[start]; num[start++]=num[end]; num[end--]=temp; } return num; }}
1 0
- 字符串翻转算法-JAVA
- java算法3~翻转字符串
- 【算法】字符串翻转
- 翻转字符串算法
- 翻转字符串算法
- Java中的字符串翻转
- 翻转字符串Java实现
- Java中的字符串翻转
- java字符串翻转
- 编程:字符串翻转Java
- Java-字符串翻转
- Java中的字符串翻转
- Java实现-翻转字符串
- 字符串翻转(Java)
- java 句子翻转问题与字符串翻转
- Java--让一个字符串翻转
- java实现字符串翻转功能
- 【JAVA算法】英文语句翻转
- Label与ScrollView
- 51nod 1024 矩阵中不重复的元素(数学水题-取对数)
- 【HAOI2008】硬币购物
- 有些段子
- HDU 5916 Harmonic Value Description【构造】【2016中国大学生程序设计竞赛(长春)】
- 字符串翻转算法-JAVA
- typedef常用方法
- EL表达式
- Linux程序设计--线程
- 深刻理解Python中的元类(metaclass)
- 1622-5 孔富晨 总结《2016年10月21日》 【连续第21天总结】
- $.ajax()方法详解
- 接上篇(解决float导致塌陷问题)之clear:both失效
- PTA 02-线性结构1 两个有序链表序列的合并 (15分)