发现了一个简书的bug,new一个新文章首行首个文字的首字母一定会被独立大写,导致我无法正确打字TAT。
今日简单题:https://leetcode-cn.com/problems/reverse-only-letters/
先讲我自己的暴力思路,最近可能刚学会用Stack很兴奋,看到反向就想用,也确实能用,就是需要2个for循环,要把String转成char[],先遍历一遍char[],根据ascii码把字母找出来压入栈,再遍历一遍,遇到字母就从Stack里peek之后替换,再pop,最后返回的时候还要把char[]转换回String,时间复杂度2n,可以说很不优秀了。
在写第一个for循环的时候,就在想有没有可能直接把替换的动作给做了,但是如果用栈来存,必须要遍历到最后一个,才能把头给放进去,所以只能放弃。
后来看答案,果然还是一次遍历,用双指针。
这里记录一个常用ascii码:
a-z:97-122,A-Z:65-90,0-9:48-57
String转char[]的方法:
String s = “abc”;
char[] cs = s.toCharArray();
char[]转String:
String.valueOf(cs);
网友评论