leecode刷题(11)-- 反转字符串

反转字符串

描述:

编写一个函数,其作用是将输入的字符串反转过来。

示例 1:

输入: "hello"
输出: "olleh"

示例 2:

输入: "A man, a plan, a canal: Panama"
输出: "amanaP :lanac a ,nalp a ,nam A"

思路:

其实这道题我们很容易可以想到使用数组下标的方法,将字符串转换为 char 数组,遍历数组重新赋值。其中观察反转字符串可以知道,两个反转字符串字符的下标之和为字符串长度 - 1。

比如示例1 中,h 对应数组下标为 0,反转后的 h 对应数组下标为 4, 0 + 4 = 5 -1。

代码如下:

public class ReverseString {
public String reverseString(String s) {
if (s == null || s.length() == 0) {
return s;
}
int length = s.length();
char[] array = s.toCharArray();
for (int i = 0; i < length / 2; i++) {
char tmp = array[i];
array[i] = array[length - 1 - i];
array[length - 1 - i] = tmp;
}
return new String(array);
} public static void main(String[] args) {
String s = "hello";
ReverseString reverseString = new ReverseString();
System.out.println(reverseString.reverseString(s));
}
}

优化:

上边我们使用了交换数组下标的方法,其实java中有个函数叫 charAt(),解释如下:

charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。

所以我们更改我们的代码如下:

public class ReverseString {
public String reverseString(String s) {
if (s == null || s.length() == 0) {
return s;
}
int length = s.length();
char[] array = s.toCharArray();
for (int i = 0; i < length; i++) {
array[i] = s.charAt(length - 1 -i);
}
return new String(array);
} public static void main(String[] args) {
String s = "hello";
ReverseString reverseString = new ReverseString();
System.out.println(reverseString.reverseString(s));
}
}

但其实java中还有个更简单的反转函数 reverse(),就可以用来反转字符串,利用该方法,我们可以做到只写一行代码:

public class ReverseString {
public String reverseString(String s) {
if (s == null || s.length() == 0) {
return s;
}
return new StringBuffer(s).reverse().toString(); //即这行
} public static void main(String[] args) {
String s = "hello";
ReverseString reverseString = new ReverseString();
System.out.println(reverseString.reverseString(s));
}
}

总结:

可以看到,我们使用反转函数 reverse(),代码最少最简洁,但是直接调用 api 这种方法肯定跟我们刷 leecode 的初衷是不符的,理解字符串反转的思路是很重要的,是吧是吧(眨眼)。

leecode刷题(11)-- 反转字符串的更多相关文章

  1. leecode刷题(16)-- 字符串转换整数

    leecode刷题(16)-- 字符串转换整数 字符串转换整数 描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格 ...

  2. leecode刷题(12)-- 整数反转

    leecode刷题(12)-- 整数反转 整数反转 描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: - ...

  3. leecode刷题(22)-- 反转数组

    leecode刷题(22)-- 反转数组 反转数组 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3-> ...

  4. leecode刷题(15)-- 验证回文字符串

    leecode刷题(15)-- 验证回文字符串 验证回文字符串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 ...

  5. leecode刷题(13) -- 字符串中的第一个唯一字符

    leecode刷题(13) -- 字符串中的第一个唯一字符 字符串中的第一个唯一字符 描述: 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引.如果不存在,则返回 -1. 案例: s = & ...

  6. leecode刷题(18)-- 报数

    leecode刷题(18)-- 报数 报数 描述: 报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数.其前五项如下: 1. 1 2. 11 3. 21 4. 1211 5. 1112 ...

  7. python在leecode刷题-第一题和第七题

    class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] num ...

  8. leecode刷题(19)-- 最长公共前缀

    leecode刷题(19)-- 最长公共前缀 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: [&quo ...

  9. leecode刷题(17)-- 实现StrStr

    leecode刷题(17)-- 实现StrStr 实现StrStr 描述: 实现 strStr() 函数. 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串 ...

随机推荐

  1. js是函数式的面向对象编程语言

    js是函数式的面向对象编程语言,而非类式的面向对象编程语言

  2. Python中的try...except...finally

    Python的异常处理代码格式如下: try: // do something except Exception as e: // dual with exception finally: // fi ...

  3. ROS tf 编程指南

    ROS (Robot Operating System, 机器人操作系统)是最知名的机器人操作系统,广泛应用于无人驾驶和机器人,tf(transforms,坐标系转换)是ROS下的一个常用的工具库.r ...

  4. Powerdesigner逆向工程从mysql生成PDM

    大家喜欢用powerDesigner进行数据库建模.通常都是先设计出物理模型图,再转换出数据库需要的SQL语句,从而生成数据库.但“powerDesigner逆向工程”就能将数据库逆向转为物理模型图. ...

  5. AngularJs(v1)相关知识和经验的碎片化记录

    1.利用angular指令监听ng-repeat渲染完成后执行脚本 http://www.cnblogs.com/wangmeijian/p/5141266.html 2.$http的POST请求中请 ...

  6. getparameter()和getattribution()的区别的 java详细

    两个Web组件之间为转发关系时,转发源会将要共享 request范围内的数据先用setAttribute将数据放入到HttpServletRequest对象中,然后转发目标通过 getAttribut ...

  7. javascript总结28 :匿名函数

    1 匿名函数 //匿名函数. // (function (){ // console.log(1); // }) 2  匿名函数作用 //1.直接调用 (function (){ console.lo ...

  8. Web大文件(夹)上传(断点续传)控件发布-Xproer.HttpUploader6

    版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  9. STS 闪退

    # # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ILLEGAL_INSTRUCTI ...

  10. 学习python4

    文件系统实现文件的增删改查 UnicodeDecodeError: 'gbk' codec can't decode byte 0x9a in position 8: illegal multibyt ...