剑指offer39--翻转单词和左旋转字符串
来源:互联网 发布:汤姆汉克斯的地位知乎 编辑:程序博客网 时间:2024/05/16 07:01
一、题目
题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。
二、举例
例如输入字符串”I am a student. ”,则输出”student. a am I”。
三、思想
我思想是,先将字符串使用的空格的分割方式来进行分割,然后分割后的元素放入String数组中,然后再返还或者打印都可以
第二种方式是使用start和end两个指针指向的元素相互调换的方式来翻转每个字符串
四、程序
package 剑指offer;/*题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。*/public class Test43 {public static void main(String args[]){String str = "I love you so mush, do you hate me?";turnSentence(str);}public static void turnSentence(String str){// 边界条件if(str == null || str.length() < 0){throw new NullPointerException("怎么能这么输入呢");}// 将字符串按空格进行拆分,并存入数组中String ary[] = str.split(" ");// 将数组反向打印即可int num = ary.length - 1;for(int i = num; i >= 0; i--){System.out.println(ary[i]);}}}
一、题目
题目二:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。
二、举例
比如输入字符串”abcdefg”和数字2,该函数将返回左旋转2 位得到的结”cdefgab”。
三、思想
通使用三次旋转的方式来实现所谓的字符串左旋转
(1)先将字符串分割成两部分
(2)分别将两部分进行旋转
(3)然后再对整体的数组进行旋转
四、程序
刚开始的思路是有点问题的,我是先拆分了,其实是不需要拆分的
package 剑指offer;/*题目二:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。*/public class Test44 {// 将字符串进行翻转public static void reverse(char ary[], int start, int end){if(ary == null || ary.length < 1 || start < 0 || end > ary.length){throw new NullPointerException("怎么能这么输入呢");}while(start < end){char temp = ary[start];ary[start] = ary[end];ary[end] = temp;start++;end--;}}// 将数据进行左翻转public static char[] leftString(char ary[], int number){// 数组的总长度int all = ary.length;// 还是边界条件if(ary == null || ary.length < 1 || number < 1){throw new NullPointerException("怎么能这么输入呢");}// 想要把大象装冰箱,分几步,三步// 第一:将字数组分成两部分//char part1[] = new char[number];//char part2[] = new char[all - number];////for(int i = 0; i < number; i++){//part1[i] = ary[i];//}////int temp = 0;//for(int j = number; j < all; j++){////part2[temp] = ary[j];//temp++;////}// 第二:分别将两部分翻转reverse(ary, 0, number - 1);reverse(ary, number, all - 1);// 第四:将数组整体进行翻转,O了reverse(ary, 0, all - 1);return ary;}public static void main(String args[]){char ary[] = new char[]{'a', 'b', 'c', 'd', 'e', 'f', 'g'};char data[] = leftString(ary, 2);for(int i = 0; i < data.length; i++){System.out.println(data[i]);}}}
1 0
- 剑指offer39--翻转单词和左旋转字符串
- 左旋转字符串和翻转单词序列
- 剑指offer42-翻转单词顺序和字符串的左旋转
- 算法题/翻转单词和左旋转字符串
- 剑指Offer之 - 翻转单词顺序 VS 左旋转字符串
- 剑指offer 42 - 翻转单词顺序 左旋转字符串
- 剑指Offer: 翻转单词顺序列、左旋转字符串
- 剑指offer 42. 翻转单词顺序VS左旋转字符串
- 左旋转字符串LeftRotateString -- 翻转单词顺序
- 翻转单词顺序VS左旋转字符串
- 翻转单词顺序 VS 左旋转字符串
- 翻转单词顺序VS左旋转字符串
- 翻转单词顺序vs左旋转字符串
- 翻转单词顺序&左旋转字符串
- 翻转单词序列 vs 左旋转字符串
- 翻转单词顺序VS左旋转字符串
- 剑指Offer系列-面试题42:翻转单词顺序和左旋转字符串
- 翻转单词顺序VS左旋转字符串----->“字符串翻转”
- 如何绘制caffe网络训练曲线
- 利用两个BrocastReceiver来保证同时只有一个实例在运行
- 性能测试计划的纲要
- React生命周期
- android实现一张或多张图片压缩并保持清晰上传
- 剑指offer39--翻转单词和左旋转字符串
- PushNotification消息推送逻辑
- Android 在代码中为textview设置自定义的颜色
- 013--Floyd算法-动态规划-《算法设计技巧与分析》M.H.A学习笔记
- Spring jar 包作用
- C#dC# 简单网页外挂实例
- Android adt bundle 开发环境配置及第一个“Hello world”程序运行
- Leetcode Valid Sudoku
- win10安装bash