avatar
r*d
1
给定 bool isWord(string s)
create function to print all words based on a string
for example, input: this is desktop
output is: this is desk top
this is desktop
题好象从没见过,大家讨论一下
avatar
p*2
2
DP, DFS都行。
avatar
b*m
3
Input里面未必要有空格吧?其实就是给定词典然后返回所有可能的单词?
avatar
r*d
4
面试官给的例子没有空格,谁能简单写一下?

【在 b***m 的大作中提到】
: Input里面未必要有空格吧?其实就是给定词典然后返回所有可能的单词?
avatar
b*m
5

参考8皇后backtrack的解法。

【在 r**d 的大作中提到】
: 面试官给的例子没有空格,谁能简单写一下?
avatar
h*n
6
写了一个,没测,楼主测测有问题告诉我
bool isWord(string s)
{
if(s=="this") return true;
if(s=="is") return true;
if(s=="desk") return true;
if(s=="top") return true;
if(s=="desktop") return true;
return false;
}
void Helper(string &inputS, int start, string &tmpStr, vector &res)
{
if(start == inputS.size())
{
//删除多余的空格
tmpStr.erase(tmpStr.end()-1);
res.push_back(tmpStr);
//补回来以便正确的backtracking
tmpStr.push_back(' ');
return;
}
int i;
string str;
for(i=start;i{
if(isWord(inputS.substr(start,i-start+1)))
{
tmpStr.append(inputS.substr(start,i-start+1));
tmpStr.push_back(' ');
Helper(inputS,i+1,tmpStr,res);
tmpStr.erase(tmpStr.end()-(i-start+2), tmpStr.end());
}
}
}
vector GetValidSentence(string inputS)
{
int size = inputS.size();
vector res;
string tmpStr="";
Helper(inputS, 0, tmpStr, res);
return res;
}
avatar
r*d
7
简单改成C#测了一下,有bug
for example, input: thisisallsome
there are 24 output strings which is wrong
the output is like: this is allsome, this is is a some, this is all allsome

【在 h****n 的大作中提到】
: 写了一个,没测,楼主测测有问题告诉我
: bool isWord(string s)
: {
: if(s=="this") return true;
: if(s=="is") return true;
: if(s=="desk") return true;
: if(s=="top") return true;
: if(s=="desktop") return true;
: return false;
: }

avatar
h*n
8
我测了一下,C++代码没有问题只有两个输出
this is all some , this is allsome
你怎么改的,把你代码贴上来看看
avatar
r*d
9
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static private bool isWord(string s)
{
switch (s)
{
case "this":
case "is":
case "a":
case "all":
case "some":
case "allsome":
return true;
}
return false;
}
static private LinkedList GetValidSentence(string inputS)
{
int size = inputS.Length;
LinkedList res = new LinkedList();
string tmpStr="";
Helper(inputS, 0, tmpStr, res);
return res;
}
static private void Helper(string inputS, int start, string tmpStr,
LinkedList res)
{
if (start == inputS.Length)
{
//删除多余的空格
tmpStr.Remove(tmpStr.Length-1);
res.AddLast(tmpStr);
//补回来以便正确的backtracking
tmpStr += ' ';
return;
}
int i, j;
string str;
for (i = start; i < inputS.Length; i++)
{
for (j = i; j < inputS.Length; j++)
{
if (isWord(inputS.Substring(i, j - i + 1)))
{
tmpStr += inputS.Substring(i, j - i + 1);
tmpStr += ' ';
Helper(inputS, j + 1, tmpStr, res);
tmpStr.Remove(tmpStr.Length - (j - i + 2), j - i + 2);
}
}
}
}
static void Main(string[] args)
{
LinkedList l = GetValidSentence("thisisallsome");
}
}
}

【在 h****n 的大作中提到】
: 我测了一下,C++代码没有问题只有两个输出
: this is all some , this is allsome
: 你怎么改的,把你代码贴上来看看

avatar
h*n
10
呵呵,你改的是我之前的那个版本。。你改改我上面那个updated过得版本。。只有一
层for loop,之前想复杂了
另外需要注意的一个地方就是C#里面的string貌似是pass by value?如果是的话你得
加个ref之类的东西来变成pass by reference
avatar
C*U
11
很像我面的一个题目
用dp就可以

【在 r**d 的大作中提到】
: 给定 bool isWord(string s)
: create function to print all words based on a string
: for example, input: this is desktop
: output is: this is desk top
: this is desktop
: 题好象从没见过,大家讨论一下

avatar
d*g
12
如果输入“this”,返回应该是“this”还是“this is”?
avatar
r*d
13
this

【在 d*********g 的大作中提到】
: 如果输入“this”,返回应该是“this”还是“this is”?
avatar
Y*f
14
DP怎讲?

【在 p*****2 的大作中提到】
: DP, DFS都行。
avatar
d*e
15
既然desktop可以输出
1.desktop
2.desk top
为什么this不能也输出is?

【在 r**d 的大作中提到】
: this
avatar
l*8
16
th is?
th不是单词

【在 d**e 的大作中提到】
: 既然desktop可以输出
: 1.desktop
: 2.desk top
: 为什么this不能也输出is?

avatar
l*8
17
时间复杂度是O(n^3)吧?

【在 h****n 的大作中提到】
: 写了一个,没测,楼主测测有问题告诉我
: bool isWord(string s)
: {
: if(s=="this") return true;
: if(s=="is") return true;
: if(s=="desk") return true;
: if(s=="top") return true;
: if(s=="desktop") return true;
: return false;
: }

avatar
d*e
18
所以是分割的各部分都要valid?
thise就直接返回false?

【在 l*********8 的大作中提到】
: th is?
: th不是单词

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。