请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
"This is nowcoder"
返回:"redocwon si sihT"
public static String reverseString(String iniString) { // write code here String Str = ""; for (int i=iniString.length()-1;i>=0; i--) { Str=Str+iniString.charAt(i); } return Str; }
解题思路
这道题第一时间想到的就是遍历呗
将后边的值放到一个新数组中去然后toString就好了嘛。但结果却是打印出一串数组有逗号有括号的
于是就直接用字符串+号拼接吧,代码很简单没啥需要解释的。
效率:运行时间:219ms 占用空间30776k
这里说个题外话,也算科普一下,上个代码吧!
public static void reverseString2() { String Str=null; String Str1=Str+"大家好!"; String Str2="我是一只猪!"; String Str3=Str+Str2; System.err.print(Str1+"\\\\"+Str3); }
这个打印出来的结果是什么???
不妨猜测下
意外不?
这曾经是华为的一道面试题
String 类型为null的时候,进行拼接运算,会把null转为String类型去拼接,它会做一个转型再执行拼接
先写到这,我再看看这道题还有什么其他解题思路。
原文:https://www.cnblogs.com/youknow-zx/p/11419183.html