给定一个形成单词句子的字符数组,给出一个有效的算法来反转其中单词(而不是字符)的顺序.
示例输入和输出:
>>> reverse_words("this is a string")
'string a is this'
Run Code Online (Sandbox Code Playgroud)
它应该是O(N)时间和O(1)空间(split()并且不允许推入/弹出堆栈).
这个难题来自这里.
谁能告诉我如何编写Java程序来反转给定的句子?
例如,如果输入是:
"这是一个面试问题"
输出必须是:
"问题采访是这个"
如何在Python中反转单词?
例如:
SomeArray=('Python is the best programming language')
i=''
for x in SomeArray:
#i dont know how to do it
print(i)
Run Code Online (Sandbox Code Playgroud)
结果必须是:
egaugnal gnimmargorp tseb eht si nohtyP
Run Code Online (Sandbox Code Playgroud)
请帮忙.并解释.
PS:
我不能用[::-1].我知道这件事.我必须在面试中这样做,只使用循环:)
我正准备参加入门级面试.我试图扭转字符串中单词的顺序,但我的输出是一堆没有意义的垃圾.我认为问题可能是因为我的功能使用"char*"?无论如何,继承人我的代码
#include <iostream>
#include <string>
using namespace std;
char* reverse(char* str, int a, int b);
char* reversewords(char* str);
int main()
{
char str[] = "The interview is";
cout<<"Reverse is: "<<reversewords(str);
cin.ignore();
return 0;
}
char* reverse(char* str, int a, int b)
{
int length = a-b;
for (int i=a; i<b+1; i++)
{
char c =str[length-i-1];
str[length-i-1]=str[i];
str[i] = c;
}
return str;
}
char* reversewords(char* str)
{
int length = strlen(str);
int a=0;
int b=0;
while (b<length)
{
if (str[b]==' …Run Code Online (Sandbox Code Playgroud) 我想颠倒字符串的顺序.例如:"Joe Red"="Red Joe"我相信反向方法不会帮助我,因为我不想反转每个角色,只需切换单词
可能重复:
反转字符串中单词的顺序
我知道python已经为此提供了一些方法,但我正在尝试理解当你只使用列表数据结构时这些方法如何工作的基础知识.如果我有一个字符串hello world并且我想创建一个新字符串world hello,我该怎么想?
然后,如果我可以使用新列表,我将如何避免制作新列表并在适当的位置执行此操作?
最近我在讨论中被要求写一个算法来实现一个句子的单词的反转(不是整个句子的反转),而不使用除了ToCharArray和Length之外的字符串操作,如Split/Replace/Reverse/Join.以下是我在5分钟内设计的内容.虽然算法工作正常,但似乎有点丑陋的实现方式.有些人可以通过抛光代码来帮助我.
string ReverseWords(string s)
{
string reverseString = string.Empty;
string word = string.Empty;
var chars = s.ToCharArray();
List<ArrayList> words = new List<ArrayList>();
ArrayList addedChars = new ArrayList();
Char[] reversedChars = new Char[chars.Length];
int i = 1;
foreach (char c in chars)
{
if (c != ' ')
{
addedChars.Add(c);
}
else
{
words.Add(new ArrayList(addedChars));
addedChars.Clear();
}
if (i == s.Length)
{
words.Add(new ArrayList(addedChars));
addedChars.Clear();
}
i++;
}
foreach (ArrayList a in words)
{
for (int counter = a.Count - 1; …Run Code Online (Sandbox Code Playgroud) 我最近在接受采访时被问到这个问题.
最初,我被要求在不使用内置的String api方法(如split等)的情况下撤销句子.
我/我:我喜欢上帝O/p:像我这样的神
我用堆栈做了这个.他的下一个问题是在不使用额外内存的情况下实现此目
我们如何在java中实现这一目标?
谢谢!