Redian新闻
>
有那个插件可以点播看CCAV的节目?
avatar
有那个插件可以点播看CCAV的节目?# PDA - 掌中宝
g*r
1
大牛来指点一下代码有没有改进的地方?
方法的就是从string tail开始一个一个的读
string reverseWord(string s)
{
string result;
int i=s.size()-1; //start from the last character
while(i>=0){
while(i>=0 && isspace(s[i])) i--; //advance i to a non-space letter
int j=i-1;
while(j>=0 && !isspace(s[j])) j--; //find the previous space
result += s.substr(j+1, i-j);
if(j>=0) result += " ";
i = j-1;
}
return result;
}
avatar
f*8
2
嘻嘻,好高兴啊, 刚好明天晚上的飞机去Vegas,带着我的OWL去了, 还有它脸上长的
很像我的猫猫
avatar
j*A
4
各位养猫大侠,一个月前领养的新猫,第二天就会用沙盘了,但从前天开始尿床!
猫现在大概6个月大。一周前开始叫春,一摸她就撅屁股。
此猫非常胆小,刚来几周都藏在床下。现在熟了,却开始尿床。已经洗了三床被子,家
里要没被子盖了!
怎么办?求支招!不胜感激!
avatar
h*e
5
沙发管家上面下了个 live 什么的,看着好像都是现场转的中央台。
请问有没有什么插件提供点播回放的?
例如什么走遍中国,寻宝,军体之类的节目的?
谢谢。
avatar
r*e
6
isspace 这是啥么?有必要新造一个helper么?
avatar
i*r
7
猫猫眼神很杀人啊
avatar
c*r
8
神州不灭?这是天朝派过去的吗?
avatar
M*o
9
fix了没?发春了的猫会乱尿的
avatar
s*x
10
你的方法彻头彻尾没有一点点对的地方,从函数signature 到思路。
这是个很古老的题了,为什么不先Google 一下呢?cc150 上好像就有这题。你这种刷
题方法可能效果是反的。

letter
★ 发自iPhone App: ChineseWeb 8.7

【在 g********r 的大作中提到】
: 大牛来指点一下代码有没有改进的地方?
: 方法的就是从string tail开始一个一个的读
: string reverseWord(string s)
: {
: string result;
: int i=s.size()-1; //start from the last character
: while(i>=0){
: while(i>=0 && isspace(s[i])) i--; //advance i to a non-space letter
: int j=i-1;
: while(j>=0 && !isspace(s[j])) j--; //find the previous space

avatar
h*t
11
我OUT了,第一个是什么东西?

【在 f*****8 的大作中提到】
: 嘻嘻,好高兴啊, 刚好明天晚上的飞机去Vegas,带着我的OWL去了, 还有它脸上长的
: 很像我的猫猫

avatar
f*p
12
暴走硬派呀!
avatar
j*A
13
还没fix. 看来这就是原因了。谢谢你!
去哪里fix比较好?animal hospital? Or shelter?

【在 M********o 的大作中提到】
: fix了没?发春了的猫会乱尿的
avatar
f*c
14
In Python:
def reverseWord(s):
return ' '.join([x[-1::-1] for x in s.split()])
^_^ (Sorry Python is not good for alg. demonstration but good for solution)
In C++:
if we can use strtok lib function, then we get each word from the string.
next for each word do the reverse
Is it good? waiting for comments.

letter

【在 g********r 的大作中提到】
: 大牛来指点一下代码有没有改进的地方?
: 方法的就是从string tail开始一个一个的读
: string reverseWord(string s)
: {
: string result;
: int i=s.size()-1; //start from the last character
: while(i>=0){
: while(i>=0 && isspace(s[i])) i--; //advance i to a non-space letter
: int j=i-1;
: while(j>=0 && !isspace(s[j])) j--; //find the previous space

avatar
f*8
15
是个包啊!!

【在 h*****t 的大作中提到】
: 我OUT了,第一个是什么东西?
avatar
c*n
16
为啥泥盆妹子有钱纹身 有钱买摩托车 就不肯去整整牙齿
avatar
b*g
17
我觉得这题的本意就是让你进行字符操作来逆转顺序,属于细节实现题。如果用现成的
库函数做,那基本就和反转linked list题你不操作指针,翻转node里的value差不多了。

【在 f***c 的大作中提到】
: In Python:
: def reverseWord(s):
: return ' '.join([x[-1::-1] for x in s.split()])
: ^_^ (Sorry Python is not good for alg. demonstration but good for solution)
: In C++:
: if we can use strtok lib function, then we get each word from the string.
: next for each word do the reverse
: Is it good? waiting for comments.
:
: letter

avatar
F*x
18
包啊,我以为是摆在那儿的呢,像招财猫样的。

【在 f*****8 的大作中提到】
: 是个包啊!!
avatar
l*t
19
最后一个是凤姐
avatar
s*x
20

了。
Right . 都是零分,

【在 b******g 的大作中提到】
: 我觉得这题的本意就是让你进行字符操作来逆转顺序,属于细节实现题。如果用现成的
: 库函数做,那基本就和反转linked list题你不操作指针,翻转node里的value差不多了。

avatar
f*8
21
特别喜欢那个小耳朵,还有个褶子。。
avatar
f*p
22
凤嫂

【在 l****t 的大作中提到】
: 最后一个是凤姐
avatar
p*r
23
这个题的要求in place reversing吧,不能用extra memory。
avatar
G*s
24
反正总会摔掉的
整了也使浪费

【在 c******n 的大作中提到】
: 为啥泥盆妹子有钱纹身 有钱买摩托车 就不肯去整整牙齿
avatar
f*g
25
这题先写reverse string函数, 吃两个pointer
你对着一个句子先做一次,
然后对着每个单词再做一次
希望有帮助
avatar
f*c
26
Java的话怎么in place啊?StringBuffer也不能用?String is immutable in Java...

【在 p***r 的大作中提到】
: 这个题的要求in place reversing吧,不能用extra memory。
avatar
f*c
27
op的帖子没有别的其它说明.
还有标点符号,或者连续多于一个的空格的情况[俺的code对这个情况没有处理,简单
试了一个,seg错误],俺的解法只对 “正常” 的输入有效。
这里的s要不要处理内存(in main)?
请专家指正。谢谢!
=============================================
给定 s = "Hello World"
要求这样 ==> "dlroW olleH"
直接swap s[i] 和 s[n-i-1] 只要 i < n - i - (2*i+1 < n)
这个简单,甚至都不要界定word,space也跟着swap了
不过题目既然叫word in string,应该这不是要的解
否则直接call下面的函数就可以了,reverseCall(s,0,s.size)
还是这样 ==> "olleH dlroW"
using namespace std;
void reverseWord(string &s, size_t start, size_t end) {
size_t i = 0;
char x;
while(i+i < end-start) { //equal to start+i < end-i
x = s[start+i];
s[start+i] = s[end-i];
s[end-i] = x; //better if swap is allowed to call
++i;
}
}
void reverse(string &s) {
size_t slen = s.size();
if (2 > slen) return; //for 1 or 0 char string
size_t i = 0, start = 0;
for(i = 0; i < slen; ++i) {
if (' ' == s[i] || i == slen-1) { //end of the word
if( i == slen - 1) reverseWord(s, start, i);
else reverseWord(s,start,i-1);
start = i + 1;//new start index
}
}
}
int main(int argc, char *argv[]) {
string s;
cout << "Please enter the string: ";
getline(cin, s);
reverse(s);
cout << "The reversed is: " << s << endl;
return 0;
}
Please enter the string: abc DEF
The reversed is: cba FED
Please enter the string: HELLO World
The reversed is: OLLEH dlroW

【在 p***r 的大作中提到】
: 这个题的要求in place reversing吧,不能用extra memory。
avatar
b*g
28
这题没要求in place,新出的II有这个要求,但多了个条件就是首尾没有空格。虽然我
觉得首位有空格也能in place。in place主要就是靠两遍反转:第一个pass先反转整个
string,这样每个word的位置是对了,但每个word本身的字符顺序是反的;第二个pass
逐个反转每个word的字符。

【在 p***r 的大作中提到】
: 这个题的要求in place reversing吧,不能用extra memory。
avatar
f*c
29
请问哪里有新出的II?Leetcode没看到啊

pass

【在 b******g 的大作中提到】
: 这题没要求in place,新出的II有这个要求,但多了个条件就是首尾没有空格。虽然我
: 觉得首位有空格也能in place。in place主要就是靠两遍反转:第一个pass先反转整个
: string,这样每个word的位置是对了,但每个word本身的字符顺序是反的;第二个pass
: 逐个反转每个word的字符。

avatar
g*r
30
上Leetcode上看了一下,发现这题还有solution。
"One simple approach is a two-pass solution: First pass to split the string
by spaces into an array of words, then second pass to extract the words in
reversed order.
We can do better in one-pass. While iterating the string in reverse order,
we keep track of a word’s begin and end position. When we are at the
beginning of a word, we append it."
我的方法就是leetcode solution说的"one-pass" solution啊。时间复杂度是O(n), 空
间复杂度也是O(n).
大牛不妨说说更好的方法?
inplace reverse两边的话,不知道怎么处理中间的space?erase掉的话会不会很浪费
时间?

【在 s**x 的大作中提到】
: 你的方法彻头彻尾没有一点点对的地方,从函数signature 到思路。
: 这是个很古老的题了,为什么不先Google 一下呢?cc150 上好像就有这题。你这种刷
: 题方法可能效果是反的。
:
: letter
: ★ 发自iPhone App: ChineseWeb 8.7

avatar
g*r
31
extra space怎么处理呢?

【在 f****g 的大作中提到】
: 这题先写reverse string函数, 吃两个pointer
: 你对着一个句子先做一次,
: 然后对着每个单词再做一次
: 希望有帮助

avatar
L*s
32
# non-idiomatic python code
# just to illustrate the algorithm clearer
def swap_chars(s, iBgn, iEnd):
""" Reverse chars in buffer s ranging from iBgn to iEnd (exclusive).
"""
for i in range(iBgn, (iBgn+iEnd)//2):
j = iBgn + iEnd - i - 1
s[i], s[j] = s[j], s[i]
def reverse_words_inplace(s):
""" Reverse all words in a sentence in-place.
E.g. 'this is simple' -> 'simple is this'
"""
n = len(s)
# First pass, char-level reversal in the sentence
swap_chars(s, 0, n)
# Second pass, char-level reversal in each word
i, j = 0, 1
while j < n:
if s[j] == ' ':
swap_chars(s, i, j)
i = j + 1
j += 2
else:
j += 1
swap_chars(s, i, n) # last word
# Test
if __name__ == '__main__':
s = list('this is simple')
reverse_words_inplace(s)
print(''.join(s)) # simple is this
s = list('a bc cdf')
reverse_words_inplace(s) # cdf bc a
print(''.join(s))
s = list('a b c')
reverse_words_inplace(s)
print(''.join(s)) # c b a

【在 f***c 的大作中提到】
: In Python:
: def reverseWord(s):
: return ' '.join([x[-1::-1] for x in s.split()])
: ^_^ (Sorry Python is not good for alg. demonstration but good for solution)
: In C++:
: if we can use strtok lib function, then we get each word from the string.
: next for each word do the reverse
: Is it good? waiting for comments.
:
: letter

avatar
b*i
33
我来添个乱
JavaScript 1-liner:
('abc def ghi').split('').reverse().join('').split(' ').reverse().join(' ')
//"cba fed ihg"
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。