由买买提看人间百态

topics

全部话题 - 话题: str
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
b******e
发帖数: 3348
1
来自主题: JobHunting版 - [合集] Facebook被拒,写个面经
☆─────────────────────────────────────☆
littlebolt (i love bolt) 于 (Thu Jun 16 14:13:42 2011, 美东) 提到:
签了nda,phone和onsite写一起了
1.把一个字符串转成float,字符串可能是负的一百点三还有个指数E-09这样的
2.反转单链表..
3.给一个整数,求next permutation 就是数字组成一样的 但是比这个数大的最小的一
个数
4.一个很大的文件 怎么去掉duplicate
5. circular sorted array找元素
6.分层打印tree
7.一个字符串,每个字符可以替换成好多其他字符,打印所有可能
8.很简单的一个题,就是会用vector, set, map, pair这些玩意就行了
9.应该还有一个题,不难,但是怎么都想不起来了...
效率很高,拒信很快,move on啦~~
☆─────────────────────────────────────☆
gate (离开之后,再见以前) 于 (Thu Jun 16 14:17:... 阅读全帖
w****x
发帖数: 2483
2
来自主题: JobHunting版 - 问个amazon面试题
int ClacTarget(int nLen, int nIndex)
{
assert(nLen > 0 && nIndex > 0 && nLen > nIndex);
if (nIndex < nLen/2)
return 2 * nIndex;
return (nIndex - nLen/2) * 2 + 1;
}
char* InplaceConvert(char* str)
{
if (NULL == str)
return NULL;
int nLen = strlen(str);
if (0 == nLen || nLen%2 != 0)
return str;
int nCount = nLen - 2;
for (int i = 1; i < nLen && nCount > 0; i += 2)
{
int nCur = ClacTarget(nLen, i);
char cTmp = str[nCur];
... 阅读全帖
p*****2
发帖数: 21240
3
void combine( string str ){
int length = str.Length;
char[] instr = str.ToCharArray();
StringBuilder outstr = new StringBuilder();
doCombine( instr, outstr, length, 0, 0 );
}
void doCombine( char[] instr, StringBuilder outstr, int length,
int level, int start ){
for( int i = start; i < length; i++ ){
outstr.Append( instr[i] );
Console.WriteLine( outstr );
if( i < length - 1 ){
doCombine( instr, outstr, lengt... 阅读全帖
i**********e
发帖数: 1145
4
用 long long 检测 overflow,简单一些。。。
int atoi(const char *str) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int sign = 1;
while (*str == ' ') {
str++;
}
if (*str == '+') {
str++;
} else if (*str == '-') {
sign = -1;
str++;
}
long long num = 0;
bool overflow = false;
while (!overflow && isAlpha(*str)) {
int dig = *str... 阅读全帖
p*****2
发帖数: 21240
5
来自主题: JobHunting版 - DP与Greedy的题

是。因为做过很多类似的DP题,上来就往DP那里想了。做的时候才发觉DP帮助不明显。
但是测试用例也都过了,就提交了。这题证明greedy可以也得花一些时间。不是很直观
。如果只是有思路的话,还是会在greedy和dp只见纠缠。感觉比赛的时候很难掌握呀。
另外,上一下greedy的代码。
public class test2 {
static String s;
static int k;
static HashSet pairs = new HashSet();
static boolean isForbidden(char[] arr) {
Arrays.sort(arr);
return pairs.contains(new String(arr));
}
static int Play(String str) {
int count = 0;
int count1 = 0;
int count2 = 0;
int j = 0;
for (int... 阅读全帖
z********c
发帖数: 72
6
来自主题: JobHunting版 - 讨论一道题
heap不能解决频度发生改变时的调整,所以我想到的可以用hash+BST解决,C++里BST的
实现采用set
map freq;
set > bst;
bst的元素是一个的pair,以frequency排序
来一个str
1. f = freq[str] ++;
2. if (bst.find ((f, str)) != bst.end ()) {
// bst里有str了,那么更新str的freq值
bst.erase ((f, str))
bst.insert ((f + 1, str))
}
3. else
if (bst.size () < K)
// bst里元素不足K
bst.insert ((f + 1, str))
4. else
if (f + 1 > bst.begin ()->first) {
// str的freq大于bst中最小元素的freq
b... 阅读全帖
l*********8
发帖数: 4642
7
来自主题: JobHunting版 - leetcode上wild match
I modified the program.
Now the major function should be simple enough (although the whole
program is not that short).
class Solution {
public:
bool isMatch(const char *s, const char *p) {
if(!s || !p )
return false;
const char * nextStar = strchr(p, '*');
if ( !nextStar)
return strCmp(s, p);
if (!strCmpN(s, p, nextStar-p) )
return false;
do {
s += nextStar-p;
p = nextStar + 1;
n... 阅读全帖
a*****s
发帖数: 1121
8
来自主题: JobHunting版 - a1b2c3d4 变abcd1234
public ArrayList groupSwap(ArrayList str, int i, int j){
int p1=0;
int p2=str.size()-1;
//first consider boundary condition 1 all belongs to group 1
while(Integer.parseInt(str.get(p1).toString())%2==1 && p1 p1++;
}
//then consider boundary condition 2 all belongs to group2
while(Integer.parseInt(str.get(p2).toString())%2==0 && p1 p2--;
}
if(p1==p2) return str;
//nor... 阅读全帖
e******i
发帖数: 106
9
来自主题: JobHunting版 - 问一道题的优化以及时间复杂度
这是在career cup 上看到的题:
Given a hashmap M which is a mapping of characters to arrays of substitute
characters, and an input string S, return an array of all possible mutations
of S (where any character in S can be substituted with one of its
substitutes in M, if it exists).
What is the time complexity? What is the space complexity? Can you optimize
either?
Example input:
M = { f: [F, 4], b: [B, 8] }
S = fab
Expected output:
[fab, Fab, 4ab, faB, FaB, 4aB, fa8, Fa8, 4a8]
这是我的解法,用backtrack... 阅读全帖
W********e
发帖数: 45
10
题目是leetcode上的Generate Parentheses。
不理解为什么有时候用DFS需要resize,有时候不需要。下面这第一种是resize了,
resize的意义是什么?:
void CombinationPar(vector& result, string& sample, int deep,
2: int n, int leftNum, int rightNum)
3: {
4: if(deep == 2*n)
5: {
6: result.push_back(sample);
7: return;
8: }
9: if(leftNum 10: {
11: sample.push_back('(');
12: CombinationPar(result, sample, deep+1, n, leftNum+1, righ... 阅读全帖
s********u
发帖数: 1109
11
来自主题: JobHunting版 - ebay skype interview面经(4轮)
挖个坟,这个readline的题目,搜了一下,好像应该是这个意思吧:
用一个buffer来存字符流,如果中间有换行,那么将这一行返回成一个字符串输出,但
是这个buffer里面的东西继续保留,下次readline()再输出;
如果一行非常长,那么可能需要用到几次read(),来拼出这个完整的line。
/*Implement a function char* readLine(); which returns single lines from a
buffer.
To read the buffer, you can makes use of a function int read(char* buf, int
len) which fills buf with upto len chars and returns the actual number of
chars filled in. Function readLine can be called as many times as desired.
If there is no valid data or newline ter... 阅读全帖
w**5
发帖数: 34
12
可以这样不?
string serialize(string &str1, string &str2)
{
string str = str1;
str.append(str2);
str[str1.length()] |= 0x80; // 把st2的第一个char变成负数
return
}
void deserialize(string &str, string &str1, string &str2)
{
for (int i=0; i {
if (str[i] < 0) {
str[i] &= 0x7f;
str1 = str.substr(0, i);
str2 = str.substr(i, str.length() - i);
}
}
}
u*l
发帖数: 1943
13
来自主题: JobHunting版 - 一刀题
和走台阶那个题差不多吧。 DP
// Java
public static int count(String str) {
if(str == null || str.isEmpty())
return 0;

if(str.charAt(0) =='0') // 0 ?
return count(str.substring(1));

if(str.length() == 1)
return 1;

int firstStep = Integer.parseInt(str.substring(0,2));
if(firstStep > 26 ) {
return count(str.substring(2)); // cannot move 2 steps
} else {
return count(str.subst... 阅读全帖
p*****2
发帖数: 21240
14
来自主题: JobHunting版 - 请教一道面试题
def dfs(str, i)
if i==str.length
puts str
return
end

if str[i] == "?"[0]
str[i]='0'
dfs(str, i+1)
str[i]='1'
dfs(str, i+1)
str[i]='?'
else
dfs(str, i+1)
end
end
dfs("adg?b?dd?g", 0)
p*****2
发帖数: 21240
15
来自主题: JobHunting版 - 请教一道面试题
还是2.0好用一些。
def dfs(str, i)
if i==str.length
puts str
return
end

if str[i] == '?'
str[i]='0'
dfs(str, i+1)
str[i]='1'
dfs(str, i+1)
str[i]='?'
else
dfs(str, i+1)
end
end
dfs("adg?b?dd?g", 0)
s********u
发帖数: 1109
16
来自主题: JobHunting版 - 问一个关于stringstream的诡异问题
今天在做波兰表达式的时候想到用一下stringstream。
试了一下,发现>>与<<的行为非常诡异,代码和输出如下:
string str = "abc xyz";

stringstream stream(str);

cout << stream.str() <
stream >> str;

cout << str < stream << str;

cout << stream.str() <
stream >> str;

cout << str < 就是将一个字符串吐出来,再塞回去,这时候stream里的字符串是一样的。
但是再吐出来,就不是这个abc字符串了,而是他后面那个,也就是说abc是塞到流的最
后了。但是stream.str()却一致。太诡异了。
s********u
发帖数: 1109
17
这是readline那个题我参照网上的代码写的。比这个要复杂一些,因为一个line的字符
是不确定的。
#define MAX_LEN 4096
int read(char* buf, int len);
char *readLine(){

static bool EOF = false;
char *str = NULL;
int i, size = 0;

static int currentPos = MAX_LEN;

static char* buffer = new char[MAX_LEN];

while(!EOF || currentPos != MAX_LEN ){

// buffer is not empty, handle buffer first
if(currentPos != MAX_LEN){

for(i = currentPos; i < MAX_LEN; i++)
... 阅读全帖
s********u
发帖数: 1109
18
来自主题: JobHunting版 - 请教一个fb面试问题
老题了吧,不过老要写错,尤其是那个read4写read的更恶心。
#define MAX_LEN 4096
int read(char* buf, int len);
char *readLine(){

static bool EOF = false;
char *str = NULL;
int i, size = 0;

static int currentPos = MAX_LEN;

static char* buffer = new char[MAX_LEN];

while(!EOF || currentPos != MAX_LEN ){

// buffer is not empty, handle buffer first
if(currentPos != MAX_LEN){

for(i = currentPos; i < MAX_LEN; i++)
if( buffer[i] ==... 阅读全帖
z***e
发帖数: 58
19
来自主题: JobHunting版 - 发个L家二面,求有onsite
#3 O(n)
public static int depthSum(String[] strs){
int depth = 1;
int totalDepth = 0;
for(String str : strs){
if(str.equals("{")){
depth ++;
totalDepth = Math.max(depth, totalDepth);
} else if(str.equals("}")){
depth --;
}
}
int sum =0;
int currentDepth = 0;
for(String str : strs){
if(str.equals("{")){
currentDepth ++;
... 阅读全帖
p*****2
发帖数: 21240
20
来自主题: JobHunting版 - 请教个G题目

这个行吗?
int curr = 0;

Node dfs(String str){
if(curr >= str.length())
return null;

int i = curr;

while(i i++;

Node node = new Node(str.substring(curr, i));
curr = i+1;
if(i node.left = dfs(str);
node.right = dfs(str);
}
return node;
}
p*****2
发帖数: 21240
21
来自主题: JobHunting版 - 请教个G题目

这个行吗?
int curr = 0;

Node dfs(String str){
if(curr >= str.length())
return null;

int i = curr;

while(i i++;

Node node = new Node(str.substring(curr, i));
curr = i+1;
if(i node.left = dfs(str);
node.right = dfs(str);
}
return node;
}
F********g
发帖数: 475
22
/* add chars */
char test_str[32] = "Mr John Smith ";
void string_add_char(char *str)
{
unsigned int indx = 0;
char string_m[32];
//char *string_m;
while(*(str+indx) != '\0')
{
if(*(str+indx) != ' ')
{
indx++;
}
else
{
indx++;
if(*(str+indx) == ' ')
{
break;
}
else
{
strcpy(string_m,str+indx);
printf("%s\r\n",string_m);
indx += 2;
strcpy(str+indx,string_m);
*(str+indx-3*sizeof(char))='%';
... 阅读全帖
t**r
发帖数: 3428
23
int atoi(const char *str) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (!str){return 0;}
int i=0;
bool pos=true;
int res=0;
while (str[i]==' '){ i++;}
if (str[i]=='+'){ pos=true;i++;}
if (str[i]=='-'){ pos = false;i++;}
if (!isdigit(str[i])){return 0;}
while (isdigit(str[i])){
if (pos && res>INT_MAX/10){return INT_MAX;}
if (pos && res==INT_MAX/10... 阅读全帖
s*****n
发帖数: 5488
24
送分题。
void reverseAString(char * str)
{
if (!str) return;

static char * strStart = str;
if (str)
reverseAString(str ++);
else
{
str--;
}

if (str > strStart)
{
swap(str, starStart);
str --;
strStart ++;
}
}

if
f*********8
发帖数: 34
25
来自主题: JobHunting版 - A simple interview question
我写程序能力很差,大牛轻拍,我觉得我的程序没有满足scan the string only once
的要求,因为总是access str[i-1]了
void main()
{
char str[]="aaabccffeeeehhyu";
int i=0,j=0;
int count=0;
char tmp=str[0];
char outstr[20];
char outstrcount[2];
while(str[i])
{
if(str[i]==tmp)
{
count+=1;
tmp=str[i];
i++;
}
else
{
outstr[j++]=str[i-1];
itoa(count,outstrcount,10);
outstr[j++]=outstrcount[0];
... 阅读全帖
n********y
发帖数: 66
26
欢迎拍砖,就用了一个 256 字节的table来检查一个数字是否出现过
#include
#include
#include
#include
char* nextpointer(char* str, int strlen)
{
char *p = str;
char *pend = str + strlen;
char count[256];
memset(count, 0, sizeof(count));
while (p < pend)
{
++count[*p];
if (count[*p] > 1)
{
return p;
}
++p;
}
return p;
}
void longestsingle(char* str, int strlen)
{
char *pstart = str;
char *pend... 阅读全帖
s****y
发帖数: 1
27
来自主题: JobHunting版 - aababccbc remove abc
不用栈应该也可以吧
bool isMatch(const std::string &str,const std::string &pattern,int loc){
int i = pattern.size()-1;
while( i >= 0){
if(pattern[i--] != str[loc--])
return false;
}
return true;
}
void removeStringPattern(std::string &str, const std::string & pattern){
if( str.empty() || pattern.empty() || str.size() < pattern.size())
return;
int patternSize = pattern.size();
int strSize = str.size();
int loc = 0;
while(strSize >= patternSize... 阅读全帖
g**********y
发帖数: 14569
28
来自主题: JobHunting版 - 一个老算法题【update】
前天在版上看到打印所有矩阵结合次序(Catalan Numbers)的讨论,最后给出的程序比
较长,我想了一下,既然都是Catalan Numbers, 那么生成Dyck word list的程序应该
可以变形成矩阵结合次序。
CareerCup给出的Dyck word list程序很简洁,我就试着映射了一下:
先推‘A’进栈
对应Dyck word (比如XXXYYY), 遇到X, push nextChar 进栈;
遇到Y, 如果pop()出两个,结合后推进栈
==============================================================
以上是写完后在路上刚悟到的,这个映射应该还算简单。如果不用映射,谁能给个更简洁的解法?
附Java code ==>
public void generate(int count) {
print(count, count, new char[2*count], 0);
}

public void print(int l, int r, char[] s... 阅读全帖
s******d
发帖数: 61
29
public static void findpairs(String file){
String[] str=file.split(" ");
for(int i=0;i HashSet hash=new HashSet();
char[] ch=str[i].toCharArray();
for(int z=0;z hash.put(new Charactor(ch[z]));
for(int j=i+1;j if(str[j].length()!=str[i])
continue;
char[] test=str[j].toCharArray();
boolean flag=true;
for(int p=0;p if(!hash.contains(new Charactor(test[p])))
flag=false;
}
}
if(flag)
System.out.print("The simil... 阅读全帖
f******h
发帖数: 45
30
来自主题: JobHunting版 - 请教两个算法题
第二题,终于弄懂什么意思了.
贴一个Java版的
public class Solution {
public String countAndSay(int n) {
// Start typing your Java solution below
// DO NOT write main() function
if(n<=0)
return null;
else if(n==1)
return "1";
else{
String str = "1";
while(n>1){
str = convert(str);
n--;
}
return str;
}
}

public String convert(String str){
Strin... 阅读全帖
w****f
发帖数: 684
31
来自主题: JobHunting版 - another interview question
今天的一个电面, Implement itoa() with C++ and give test cases!
string intToStr(int n)
{
bool isNeg =false;
if(n<0) {
isNeg =true;
n *= -1;
}
string str;
do {
str += (char) ( n%10 + "0");
n /=10;
} while(n>0);
if(isNeg) str += "-";
int nstr=str.size();
for( int i=0; i string ct = str[i];
str[i] = str[ nstr-1 -i];
str[nstr-1-i] =ct;
}
return str;
}
test cases: 123, -123, 0, 1, 123456789
可interviewer 说我漏了一种test c... 阅读全帖
w****f
发帖数: 684
32
来自主题: JobHunting版 - another interview question
find one solution to fix INT_MIN problem
string intToStr(int n)
{
bool isNeg=false;
if(n<0) isNeg=true;
string str;
do {
str += (char) ( abs(n%10) + '0');
n /=10;
} while(n>0);
if(isNeg) str += '-';
int nstr=str.size();
for( int i=0; i string ct = str[i];
str[i] = str[ nstr-1 -i];
str[nstr-1-i] =ct;
}
return str;
}
z******e
发帖数: 82
33
来自主题: JobHunting版 - 发个Twitter的面试题
new test cases:
--------------------
char str[] = "\\"; // test \ inside "
char str[] = "\\";
char str[] = '\"'; // test \ inside "
char str[] = '\"';
code:
---------------------------
private static String uncomment(String str) {
boolean slash2 = false;
boolean inStr = false;
boolean slashstar = false;
boolean escape = false;
StringBuilder sb = new StringBuilder();
char lastc = ' ';
char c = ' ';
int deleteStart = -1;
... 阅读全帖
d******i
发帖数: 76
34
写的一个c++代码。 worst case O(N * M)
string longestCommonPrefix(vector &strs) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(strs.size() == 0) return "";
int longest = 0;
while(longest < strs[0].size())
{
for(int i = 1; i {
if(longest == strs[i].size() || strs[i][longest] != strs[0][
longest])
return strs[0].substr(0, longest);
... 阅读全帖
t****a
发帖数: 1212
35
来自主题: JobHunting版 - 这个题目怎么做?
这个是map .*的dp算法,用memoize recursion实现,包括测试数据。改成.+很简单。
懒得改了。
(defn ch-match [c1 c2]
(if (= c2 \.)
true
(if (= c1 c2)
true
false)))
(def str-match
(memoize
(fn [str1 str2]
(cond (and (empty? str1) (empty? str2)) true
(or (empty? str1) (empty? str2)) false
:else (let [c1 (peek str1)
c2 (peek str2)]
(if (= c2 \*)
(let [c3 (peek (pop str2))]
(if (ch-match c1 c3)
... 阅读全帖
o****d
发帖数: 2835
36
来自主题: JobHunting版 - 关于atoi的overflow
http://discuss.leetcode.com/questions/192/string-to-integer-ato
Am I right?
We can separate INT_MAX and INT_MIN to first n-1 digits and last one digit,
which can be used to check overflow before the answer really overflows. Note
that abs(INT_MIN)=INT_MAX+1.
class Solution {
public:
int atoi(const char *str) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int pos=0;
//skip whitespace
while(str[pos]==' ')pos++;
//check if negative
int negative=0;
if(... 阅读全帖
J**9
发帖数: 835
37
来自主题: JobHunting版 - G家电面题
This is another question that seems easy but hard to code precisely.
Here's my version in C:
///1) Convert the string into all lower cases either in place or into
another buffer;
///2) First pass to check which ones are vowels;
///3) Second pass to sum up the products.
///4) Space O(n); Time O(n)
/** convert a string to lowercase in place */
char* hkStringTolower(char *str)
{
if(!str) return NULL;
char *s=str;
while(*s)
{
*s = tolower(*s);
s++;
}
return st... 阅读全帖
l*********o
发帖数: 3091
38
来自主题: JobHunting版 - 问下LeetCode上的题目:count and say
#include
#include
int convert(char* src, char* dst)
{
*dst = 0;
int pos;
char str[64];
while(*src)
{
if(*src < '0' || *src > '9') return 1;
pos = 1;
while(*src==*(src+pos))pos++;
sprintf(str, "%d", pos);
strcat(dst, str);
dst += strlen(str);
sprintf(str, "%c", *src);
strcat(dst, str);
dst += strlen(str);
src += pos;
}
return 0;
}
int main()
{
int n = 29;
int... 阅读全帖
s********u
发帖数: 1109
39
来自主题: JobHunting版 - wordBreak问题,有非递归的方法么
之前有人放过这个题,就是提供一个bool isWord(string s)的函数,要求得到一个
string拆成若干个word的所有组合,word之间用空格隔开。
自己写了下,用递归 + memoization,想问问这个题有iteration的做法么?如果是每
个string有唯一解(只有一种拆法)呢?
vector wordBreak( string str, map >& cache){
vector vs;

if( str.empty() ){
vs.push_back(str);
return vs;
}

if(cache.count(str) > 0)
return cache[str];

string prefix;
string suffix;
vector segSuffix;

for( int len = 1;len <= str.s... 阅读全帖
p****o
发帖数: 46
40
来自主题: JobHunting版 - 问一个关于stringstream的诡异问题
you can check output position for insert (tellp) and input position for
extraction (tellg).
string str = "abc xyz";

stringstream stream(str);
// tellp() returns 0; tellg returns 0;

cout << stream.str() <
stream >> str;

// extract: input moves from 0 to 3 (tellg() ==3), which is the
whitespace position
cout << str < stream << str;
// insert: since no insertion so far, output position is still 0,
so it ... 阅读全帖
w********s
发帖数: 1570
41
没人看出bug么?
class MyString {
private:
char* _data;
size_t _len;
void _init_data(const char *s) {
_data = new char[_len+1];
memcpy(_data, s, _len);
_data[_len] = '\0';
}
public:
MyString() {
_data = NULL;
_len = 0;
}
MyString(const char* p) {
_len = strlen (p);
_init_data(p);
}
MyString(const MyString& str) {
_len = str._len;
_init_data(str._data);
std::cout << "Copy Constructor is called! source: " << str._data << std:
:endl;
}
MyStri... 阅读全帖
x****7
发帖数: 86
42
来自主题: JobHunting版 - 请教一道G的电面题。。
C++:
#include
void replaceWildCard (std::string str, size_t pos)
{
if (pos >= str.size()) {
std::cout << str << std::endl;
return;
}
if (str[pos] == '*') {
str[pos] = '0';
replaceWildCard (str, pos + 1);
str[pos] = '1';
replaceWildCard (str, pos + 1);
}
else {
replaceWildCard(str, pos + 1);
}
}
int main (int argc, char ** argv)
{
replaceWildCard (std::string(argv[1]), 0);
return 0;
}
l*********8
发帖数: 4642
43
void removeDup(string & str) {
int tail = -1;
for (int i = 0; i < str.size(); ) {
if (tail < 0 || str[i] != str[tail]) {
str[++tail] = str[i++];
} else {
--tail;
while(str[i] == str[tail + 1])
++i;
}
}
str.resize(tail+1);
}
p*****2
发帖数: 21240
44
来自主题: JobHunting版 - 请教个G题目

这个行吗?
Node dfs(String str, int s, int e){
int i = s;
while(i i++;
if(i==e){
return new Node(str.substring(s, e+1));
}
int j=i+1;
int count=0;
while(j if(str.charAt(j) == '?')
count++;
if(str.charAt(j) == ':')
count--;
j++;
}

Node node = new Node(str.subs... 阅读全帖
p*****2
发帖数: 21240
45
来自主题: JobHunting版 - 请教个G题目

这个行吗?
Node dfs(String str, int s, int e){
int i = s;
while(i i++;
if(i==e){
return new Node(str.substring(s, e+1));
}
int j=i+1;
int count=0;
while(j if(str.charAt(j) == '?')
count++;
if(str.charAt(j) == ':')
count--;
j++;
}

Node node = new Node(str.subs... 阅读全帖
t*********e
发帖数: 630
46
来自主题: Java版 - Find maximum palindrome
Is there a better way to do it? The findMaxPalindrome needs to be called
twice.
String maxPalindrome(String str) {
String maxPalindrome = "";
for(int i=0; i // when the palindrome is odd number, i.e. "aabaa"
maxPalindrome = findMaxPalindrome(str,i,i,maxPalindrome);

// when the palindrom is even number, i.e. "cccc"
maxPalindrome = findMaxPalindrome(str,i,i+1,maxPalindrome);

}
... 阅读全帖
g*********s
发帖数: 1782
47
来自主题: Programming版 - 经典题atoi的溢出处理 (转载)
this is my solution casting an unsigned int to an int. but gcc gives me
warning:
string_api.cpp: In function ‘bool overflow(unsigned int, bool, char)’:
string_api.cpp:330: warning: integer overflow in expression
string_api.cpp: In function ‘int str2int(const char*)’:
string_api.cpp:346: warning: integer overflow in expression
explict type casting can fix the warning. but i don't like this solution
very much. anyone has a better alternative?
static
bool overflow(unsigned int val, bool negative, c... 阅读全帖
r****o
发帖数: 1950
48
来自主题: JobHunting版 - GOOGLE电面到ONSITE
这道题我的想法是
先排序,假定某字符串排序后是str[]=ABBCCCDDEFF
设一个output[],和一个变量index=0
i=0..len-1
str[0]可以放在output[0]
对于每个字符str[i], i=1..len-1
判断是否与str[i-1]重复,
if 不重复, 则看output[i]是否为空,若空则放str[i], 否则往output[]后找第一个
非空位置放str[i];
if 重复, 则看output[i+N]是否为空,若空则放str[i],否则往output[]后找第一个
非空的位置放str[i]。
欢迎多多抛砖。
l******c
发帖数: 2555
49
来自主题: JobHunting版 - 一道google电面题,估计挂了。。。
RPRPRPRP
welcome to optimize
//012 string to represent binary value
#include
#include
set st;
void bin21(string str, int start)
{
int end = str.length() -1 ;
if(start >= end)
return;
while((str[start] == '0') && (start < end)) start++;
if((str[start +1] == '0') && (start < end))
{
//not change
bin21(str, start + 1);
//change
if(str[start] == '1')
{
str[start] = '0';
str[start + 1] =
K******g
发帖数: 1870
50
来自主题: JobHunting版 - Amamon onsite 面经
一面:可不可以把链表先写到一个数组里,然后再转换成BST?如果需要转换成与原来
一样的BST的话,那还需要建立一个preorder的list。
二面:这题其实就是grid遍历
int isVisited[n][m];
N*M
grid[N][M]
void findWord(int n, int m, string &str)
{
if(n<0 || m<0 || n>N-1 || n>M-1) return;
if(isVisited[n][m] == 1) return;

isVisited[n][m] = 1;
str += grid[n][m];
if(lookupDict(str)) cout << str << endl;
findWord(n-1, m, str);
str.pop_back(); //assume that the string can delete the last char.
findWord(n, m-1, str);
str.pop_back();
findW
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)