S******6 发帖数: 55 | 1 一道很简单的leetcode 题目: Reverse Words in a String III
我的解法(c#)一直被报 Memory Limit Exceeded 错误。谁知道如何改进? 多谢了先
。:)
public class Solution {
public string ReverseStr(string str)
{
if(str.Length < 2) return str;
int i = str.Length-1;
string resS = null;
while(i >= 0)
{
resS += str[i--];
}
return resS;
}
public string ReverseWords(string s) {
string result = null;
if(s.Length < 2) return s;
int i = 0;
int idxS = 0;
while(i < s.Length)
{
while( idxS < s.Length && s[idxS] != ' ')
{
idxS++;
}
result += ReverseStr(s.Substring(i, idxS-i));
if(idxS != s.Length) result += ' ';
idxS++;
i = idxS;
}
return result;
}
} |
y**********u 发帖数: 2839 | 2 这都搞不定,楼主没希望了, 不太适合刷题,干点别的吧 |
t*********r 发帖数: 63 | 3 别理2楼的,哪有人天生什么都会。多刷题,多问问题,多看文章,多写代码,自然就
会提高了。
我对c#不熟悉,但是看你的算法没啥问题,估计就是string拷贝的问题了。我改了一下
,用stringbuilder代替string,并且减少了不必要的拷贝,你看看吧。
public class Solution {
public string ReverseWords(string s) {
StringBuilder result = new StringBuilder();
if(s.Length < 2) return s;
int i = 0;
int idxS = 0;
while(i < s.Length)
{
while( idxS < s.Length && s[idxS] != ' ')
{
idxS++;
}
for (int j = idxS - 1; j >= i; j--) {
result.Append(s[j]);
}
if(idxS != s.Length) result.Append(' ');
idxS++;
i = idxS;
}
return result.ToString();
}
} |
n*******s 发帖数: 17267 | 4 如果逻辑对的话,可能是边界没搞好,自己画个图或者debug一下 |
n*******s 发帖数: 17267 | 5 这种面试人不允许你直接split然后掉个次序return? |
S******6 发帖数: 55 | 6 这个方法果然可以,多谢多谢!
【在 t*********r 的大作中提到】 : 别理2楼的,哪有人天生什么都会。多刷题,多问问题,多看文章,多写代码,自然就 : 会提高了。 : 我对c#不熟悉,但是看你的算法没啥问题,估计就是string拷贝的问题了。我改了一下 : ,用stringbuilder代替string,并且减少了不必要的拷贝,你看看吧。 : public class Solution { : public string ReverseWords(string s) { : StringBuilder result = new StringBuilder(); : if(s.Length < 2) return s; : int i = 0; : int idxS = 0;
|
S******6 发帖数: 55 | 7 的确是因为自己写的code不够简练,不必要地占用了memory。多谢回复
【在 n*******s 的大作中提到】 : 如果逻辑对的话,可能是边界没搞好,自己画个图或者debug一下
|
d*********g 发帖数: 234 | 8 刷了几道了啊
[在 Sophie06 (Sophie) 的大作中提到:]
:的确是因为自己写的code不够简练,不必要地占用了memory。多谢回复 |
y**********u 发帖数: 2839 | 9 忠言逆耳,大家都不愿意听实话。楼主这个状态,水平的增长根本赶不上面试bar的增
长速度,与其花大力气做题,还不如figure something else
【在 t*********r 的大作中提到】 : 别理2楼的,哪有人天生什么都会。多刷题,多问问题,多看文章,多写代码,自然就 : 会提高了。 : 我对c#不熟悉,但是看你的算法没啥问题,估计就是string拷贝的问题了。我改了一下 : ,用stringbuilder代替string,并且减少了不必要的拷贝,你看看吧。 : public class Solution { : public string ReverseWords(string s) { : StringBuilder result = new StringBuilder(); : if(s.Length < 2) return s; : int i = 0; : int idxS = 0;
|
d**x 发帖数: 243 | 10 lz加油,天道酬勤,肯花时间,没有什么不可能的。 |
|
|
s**********g 发帖数: 14942 | 11 string和stringbuilder的开销区别很大
不是简练的问题
这个基本功一定要掌握
【在 S******6 的大作中提到】 : 的确是因为自己写的code不够简练,不必要地占用了memory。多谢回复
|
u**u 发帖数: 668 | 12 刚开始都这样,多练习就好。
编程就是慢慢才上手
要多花时间就是了 |
s******r 发帖数: 267 | |
S******6 发帖数: 55 | 14 多谢提醒。
【在 s**********g 的大作中提到】 : string和stringbuilder的开销区别很大 : 不是简练的问题 : 这个基本功一定要掌握
|
S******6 发帖数: 55 | 15 呵呵,多谢忠言逆耳。不过我还真有一种不撞南墙不回头的习惯。有时间就刷题玩儿玩
儿呗,呵呵。
【在 y**********u 的大作中提到】 : 忠言逆耳,大家都不愿意听实话。楼主这个状态,水平的增长根本赶不上面试bar的增 : 长速度,与其花大力气做题,还不如figure something else
|
S******6 发帖数: 55 | 16 非常感谢各位的友情提醒。忠言逆耳也好,提供更好的解决方法也罢,俺全部都接受。
在这里尤其要感谢 twinsclover ,其实我真的不太习惯用stringBuilder...
不过倒是真的提醒我应该加强基本功(细节把握)的练习。 |
S******6 发帖数: 55 | 17 周二到周四3天刷了25道。。。
需要加速了,呵呵。
【在 d*********g 的大作中提到】 : 刷了几道了啊 : [在 Sophie06 (Sophie) 的大作中提到:] : :的确是因为自己写的code不够简练,不必要地占用了memory。多谢回复
|
b**********l 发帖数: 431 | 18 你有芥末nb吗?那你咋不搞定呢?
一开始不学不问就天生会搞定一切?真芥末nb,干嘛不开发个比C#或者C++更牛的语言
呢?光知道瞎BB新手就nb地不得了了?嘿嘿!
【在 y**********u 的大作中提到】 : 这都搞不定,楼主没希望了, 不太适合刷题,干点别的吧
|
Q**F 发帖数: 995 | |
d**x 发帖数: 243 | 20 我看过不少职场新人开始很弱,经过努力得到质的飞跃的。来美国的一般资质都不会太
差的,只要肯努力,一切皆有可能。
士别三日当刮目相看,这三日里挥洒的当全是汗水。
lz加油! |
|
|
c********e 发帖数: 2726 | 21 这道题应该是任何语言的教科书都会有的一道例题。楼主那么辛苦码了那么多还出错,
干嘛不曲翻翻书,看些经典的CODE. |
k*****u 发帖数: 136 | 22 楼主加油吧!为什么要用C# 刷题? 能用C#的估计只有微软 和 不需要刷题的公司了 |
z**********0 发帖数: 18 | 23 不会C#
不过利扣过不去好像会报那个case的,我一般就拿到IDE里写个test unit 设断点,一
点点跟到那个bug的地方再改
(我知道用IDE打死。。。。但是白板一行行看错误 一会我就神经错乱了。。。)
你也可以在IDE设断点 一点点跟 然后慢慢脱离IDE 比靠眼睛看找bug快一些
话说。。为啥你用C#刷题呢? |
z**********0 发帖数: 18 | 24 顺便 新手借宝地问问版上有经验的前辈,传闻说用Python code会被鄙视? 不知道真
假??
C++/Python新手在纠结到底拿哪个刷呢。。因为我都不熟悉,我用哪个都一样。。。
我担忧的是人家都说"没人'会'C++" 因为C++能问的东西太多太多,随便延伸一点都问
出花了~~ 可是我没用C++做过项目,就是学校 intro level的水平
但毕竟楼主这道题,用Python 一行就写完了。。。。
return ' '.join([sub.strip[::-1] for sub in s.strip().split(' ')])
谢谢! |
z**********0 发帖数: 18 | 25 顺便 新手借宝地问问版上有经验的前辈,传闻说用Python code会被鄙视? 不知道真
假??
C++/Python新手在纠结到底拿哪个刷呢。。因为我都不熟悉,我用哪个都一样。。。
我担忧的是人家都说"没人'会'C++" 因为C++能问的东西太多太多,随便延伸一点都问
出花了~~ 可是我没用C++做过项目,就是学校 intro level的水平
但毕竟楼主这道题,用Python 一行就写完了。。。。
return ' '.join([sub.strip[::-1] for sub in s.strip().split(' ')])
谢谢! |
u***n 发帖数: 21026 | |
s**********g 发帖数: 14942 | 27 用java
我当时就是哪个都差不多,坚决用java学起
c++面试太容易掉坑里了
python真有面试官会挑的,一般好面试官不会有这问题,但这事儿看运气。我有朋友就
遇到过
java面试最好用
【在 z**********0 的大作中提到】 : 顺便 新手借宝地问问版上有经验的前辈,传闻说用Python code会被鄙视? 不知道真 : 假?? : C++/Python新手在纠结到底拿哪个刷呢。。因为我都不熟悉,我用哪个都一样。。。 : 我担忧的是人家都说"没人'会'C++" 因为C++能问的东西太多太多,随便延伸一点都问 : 出花了~~ 可是我没用C++做过项目,就是学校 intro level的水平 : 但毕竟楼主这道题,用Python 一行就写完了。。。。 : return ' '.join([sub.strip[::-1] for sub in s.strip().split(' ')]) : 谢谢!
|
z**********0 发帖数: 18 | 28 感谢回复!
Java我觉得也很难。。。我的Java就是berkeley cs61B的水平,i.e. 基本语法的刷题
水平。
那些什么mvn 什么dependency 我都不知道从哪里开始入手! 学校曾经有个project做
安卓的,那一层层的src/../.../...的简直逼疯我。。。。。。
还有什么线程池 currentHashMap 之类Java独有的概念? (虽然C++ 11引入了并发的一
些操作)
哎。。。。
【在 u***n 的大作中提到】 : 面试用Java : 逼格高用Go
|