由买买提看人间百态

topics

全部话题 - 话题: strs
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
p*****2
发帖数: 21240
1
来自主题: JobHunting版 - 上一道小题

大牛,我跪了。按照你类似的思路写了一个,还是过不了OJ。
(fn toPalin [num]
(let [toInt #(Long/parseLong %)
s (str num)
len (count s)
mid (quot (inc len) 2)
mid- (quot len 2)
first (subs s 0 mid)
first- (subs s 0 mid-)
palin (toInt (str first (clojure.string/reverse first-)))
next (str ((comp str inc toInt) first) (apply str (repeat mid- \0)))]
(if (>= palin num) (cons palin (lazy-seq (toPalin (inc palin))))
(toPalin (toInt next)))))
P****2
发帖数: 197
2
来自主题: JobHunting版 - Google 需要bug free 么?
最短SNIPPETS变形吧,一样2指针2字典,O(n)扫过去
public bool IsAnagramSubString(string str, string anagram)
{
var pStart = 0;
var pEnd = 0;
var targetDict = anagram.GroupBy(p => p)
.ToDictionary(
g => g.Key,
g => g.Count()
);
var targetTotalNum = targetDict.Values.Sum();
var foundDict = targetDict.ToDictionary(p => p.Key, p => 0);
var foundTotalNum = 0;
wh... 阅读全帖
g*****g
发帖数: 212
3
来自主题: JobHunting版 - G面经 求bless
电面2似乎本版讨论过几次了,我还贴过code。基本就是 high和low boundary一次遍历。
onsite 1: 楼主回家后的思路是对的
onsite 2:
1)前->末遍历 记录到目前位置,使用过的 digit
2)末->前遍历 对每一个数字,查找是否存在,大于自己切未使用的数字,如找到,
break
如果2)到了头,且头是9,需要进位
3) 从break的位置开始-》末遍历,依次选取最小且未使用的数字
string next(string input)
{
int n = input.size();
vector v(10, 0);
// step 1: set used digits
for(int i=0; i {
v[input[i]-'0'] = 1;
}

// step 2: find bigger unused digit at cur pos
int i= n-1;
for(i=n-1; i>=0; i--)
{
... 阅读全帖
c****p
发帖数: 6474
4
两个指针,head, tail,记循环节长度len为1
head初始都为0,tail为1。tail一直自增。
如果str[head] == str[tail], head自增。如果head>= len则归零
如果str[head] != str[tail],则len = tail。
扫完一遍查len和str.size()的关系就得了。
c****p
发帖数: 6474
5
两个指针,head, tail,记循环节长度len为1
head初始都为0,tail为1。tail一直自增。
如果str[head] == str[tail], head自增。如果head>= len则归零
如果str[head] != str[tail],则len = tail。
扫完一遍查len和str.size()的关系就得了。
c******0
发帖数: 260
6
来自主题: JobHunting版 - 这道难不难?
我觉得这题很复杂啊。字典的单词应该是有序的。
应该只要建 reversed words 的trie就行了,然后遍历字典,看能不能找到一样的。
for(string str : dict){
check str 或者 str.substr(1) 是不是在 trie:
if yes, delete str in trie
else insert reversed str into trie;
}
P**********k
发帖数: 1629
7
void find_longest_substring(string str, int n, int& start_best, int& end_
best){

string pool (2, ' ');
int pool_size = 0;
int start, shift, end;
char cur;
int length_max=0, length_cur;

start=0;
pool[0]=str[start];
pool_size++;

for(int i=1; i if(str[i]!=str[i-1]){
cur = str[i];
if(pool_size<2 && pool[0]!= cur){
pool[pool_size] = cur;
pool_size++;
shift = i;
... 阅读全帖
q********c
发帖数: 1774
8
来自主题: JobHunting版 - 杯具!越改越差
3 minutes ago Accepted 664 ms java
My code:
public class Solution {
public ArrayList anagrams(String[] strs) {
ArrayList words = new ArrayList();
HashMap hm = new HashMap();
HashSet hset = new HashSet();

for(int i = 0; i < strs.length; ++i) {
char[] ch = strs[i].toCharArray();
Arrays.sort(ch);
String ana = new String(ch);
if... 阅读全帖
w********s
发帖数: 1570
9
来自主题: JobHunting版 - 问一道G onsite题
频率统计法
ABCDEF,每次triplet XYZ
记录X的频率,Y的频率,Z的频率
X可能包含了ABCD,A出现的频率是10/20,B:6/20,C:3/20,D:1/20
ABCD如果都相同,那么就是20
ABCD如果其中2个字母相同,就是16,13,11,9,7,4
3个字母相同,结果是19,14,10,17
都不相同就是10,6,3,1
注意10可能是abbb或者abcd,那么用Y的频率来判断哪种情况。
std::string triplet()
{
static std::string password = "google";
std::set digits;
while (digits.size() < 3)
{
int d = rand() % 6;
digits.insert(d);
}
std::string result;
for (std::set::const_iterator it = digits.begin(); it != digits.end
... 阅读全帖
b*******g
发帖数: 57
10
来自主题: JobHunting版 - GOOGLE 第二轮电面
我觉得原题的意思是考虑一对单词不要有common letter,不考虑单词本身是否有重复
的letter,所以feed和pull是valid pair.
int maximalProductPairedWordLens(string strs[], int n) {
if (n < 2) return 0;
int maxProduct = 0;
vector > table(n,vector(26,false));
for (int i = 0; i < n; ++i) {
for (int j = 0; j < (int)strs[i].size(); ++j) {
table[i][strs[i][j]-'a'] = true;
}
}
for (int i = 0; i < n-1; ++i) {
for (int j = i+1; j < n; ++j) {
bool hasCommonLette... 阅读全帖
b******g
发帖数: 77
11
来自主题: JobHunting版 - GOOGLE 第二轮电面
N * LogN 解法
class StrCompare
{
public:
bool operator()( const string& str1, const string& str2 ) const
{
return str1.size() > str2.size();
}
};
class PairFinder
{
public:
void init()
{
m_nProductSize = 0;
}

size_t getProduct() const { return m_nProductSize; }
pair getPair() const { return make_pair( m_csFirst, m_
csSecond ); }

void compute( vector& vctStr )
{
init();
if( vctStr.size() < 2 ) re... 阅读全帖
h*******e
发帖数: 1377
12
namespace std {
template <>
struct hash >
{
typedef std::size_t result_type;
result_type operator()(const pair & t) const
{ return ((long)t.first * 1000003 + t.second )& (((long)1<<32 ) - 1);
}
};
}
class Solution {
public:
// suppose no two points are the same
int gcd(int a, int b)
{ return !b? a: gcd(b, a %b); }
pair getK(vector & points, int pointI, int pointJ)
{
int x1 = points[pointI].x, y1 =... 阅读全帖
h*******e
发帖数: 1377
13
namespace std {
template <>
struct hash >
{
typedef std::size_t result_type;
result_type operator()(const pair & t) const
{ return ((long)t.first * 1000003 + t.second )& (((long)1<<32 ) - 1);
}
};
}
class Solution {
public:
// suppose no two points are the same
int gcd(int a, int b)
{ return !b? a: gcd(b, a %b); }
pair getK(vector & points, int pointI, int pointJ)
{
int x1 = points[pointI].x, y1 =... 阅读全帖
r*******e
发帖数: 971
14
来自主题: JobHunting版 - 最新L家面经
楼主你挂得不冤。我是面试官也会挂掉你的。
1)数组是否排序要提前问面试官,自己想当然属于lacking communication
然后面试官在你声明low 与high 两个变量时候没有提醒你么?还是说你没有提前跟面
试官说你的方法??
2)速度不够快。否则第二题即使只有15分钟也能写个大概的。
3)如果楼主不服,我们现在来说代码
1:if(nums==null || nums.length<2) return false;
这里可能是需要抛出异常的 throw new NullPointerException();
2:if( (nums[low]+nums[high]) == sum ){ return true;}。。。
更好点的办法是在循环外面声明一个变量temp,temp = nums[low]+nums[high]
否则每次循环都得多算一次。
3.HashMap map = new HashMap();
应该写成Map map = new HashMap<>();... 阅读全帖
w**********o
发帖数: 140
15
String str = "aabbcc";
for(int i=0; i System.out.printf("%s", str.charAt(i));
}
System.out.println()
for(int i=0; i<=str.length()-1; ++i){
System.out.printf("%s", str.charAt(i));
}
有差別麼? 沒有.
請先理解做題思路.
r*****e
发帖数: 30
16
来自主题: JobHunting版 - fb国内申请的曲折经历+电面
int schedule(string str,int cd){
int ts = 0;
map dict;
for(int i = 0; i < str.length(); i++){
if(dict.count(str[i]) == 0 || ts-dict[str[i]] >= cd+1){
dict[str[i]] = ts;
}
else i--; ts++;
}
return ts;
}
r*****e
发帖数: 30
17
来自主题: JobHunting版 - fb国内申请的曲折经历+电面
int schedule(string str,int cd){
int ts = 0;
map dict;
for(int i = 0; i < str.length(); i++){
if(dict.count(str[i]) == 0 || ts-dict[str[i]] >= cd+1){
dict[str[i]] = ts;
}
else i--; ts++;
}
return ts;
}
s****a
发帖数: 794
18
class Solution {
public:
string convertToTitle(int n) {
string str;
while (n > 0) {
str.push_back((n-1)%26+'A');
n = (n-1)/26;
}
reverse(str.begin(), str.end());
return str;
}
};
m*******n
发帖数: 47
19
来自主题: JobHunting版 - F面经的一题
你的time complexity 是多少? 3 个loop嵌套。。
比下面的暴力解好?O(n^2)
int solve(string str, string p) {
int ip = 0;
int min_l = INT_MAX;
for(int i=0;i if (str[i]!=p[0]) continue;
for(int j=i;j if (str[j]==p[ip]) {
ip++;
if (ip==p.length()) {
ip=0;
min_l = min(min_l, j-i+1);
break;
}
}
}
}
return min_l
... 阅读全帖
x**********z
发帖数: 131
20
来自主题: JobHunting版 - Google 奇葩三姐面试官
一个三姐,在google工作了将近10年。考了一道超级简单的题:
给一个字符串,比如 aaabbbbccddd,返回最长的连续相同字符的子串。
这个例子,应该返回bbbb。
代码还快写完,其中有一句是
for(int i = 1; i < str.size(); i++){
这里访问 str[i]
}
然后她非说当str的size是1时,我code有问题,因为访问str[i]越界了。
我说当size是1的时候循环进不去啊,condition i 她说能进去,刚开始进入循环的时候不check condition。。
当时我就无语了。。我想着你丫是怎么进google的,还待了那么多年。
还是说丫的故意找茬黑我呢。。但这个点黑的也太2了吧。。。
x**********z
发帖数: 131
21
来自主题: JobHunting版 - Google 奇葩三姐面试官
一个三姐,在google工作了将近10年。考了一道超级简单的题:
给一个字符串,比如 aaabbbbccddd,返回最长的连续相同字符的子串。
这个例子,应该返回bbbb。
代码还快写完,其中有一句是
for(int i = 1; i < str.size(); i++){
这里访问 str[i]
}
然后她非说当str的size是1时,我code有问题,因为访问str[i]越界了。
我说当size是1的时候循环进不去啊,condition i 她说能进去,刚开始进入循环的时候不check condition。。
当时我就无语了。。我想着你丫是怎么进google的,还待了那么多年。
还是说丫的故意找茬黑我呢。。但这个点黑的也太2了吧。。。
x**********z
发帖数: 131
22
来自主题: JobHunting版 - Google 奇葩三姐面试官

code大概是这样:
int longestContSubstr(const string& str){
if(str.empty()) return 0;
int longest = 1, currentLength = 1;
for(int i = 1; i < str.size(); i++){
if(str[i] == str[i-1]) currentLength++;
else currentLength = 1;
longest = max(longest, currentLength);
}
return longest;
}
逻辑还是很简单吧,面试官的那个质疑实在有点过分。
y******g
发帖数: 4
23
来自主题: JobHunting版 - 这道狗家的题有什么好的思路吗?
#include
#include
#include
#include
using namespace std;
struct Item {
int counter;
char c;

Item(): counter(0), c('\0') {};
Item(int counter_, char c_) : counter(counter_), c(c_) {};
Item(const Item &anotherItem): counter(anotherItem.counter), c(
anotherItem.c) {};
};
struct ItemCompare {
Item* prev;

ItemCompare(Item* prevItem): prev(prevItem) {};

bool operator() (const Item &item1, const Item &item2) {
... 阅读全帖
d*****o
发帖数: 5
24
来自主题: JobHunting版 - 问个G家面试题
乱七八糟写一个
def invert(strs, indices):
for i in range(len(indices)):
index = indices[i]
if index == i:
continue
tmp = strs[index].split(',')
word = tmp[0]
if word:
strs[i] += (',' + word) if strs[i] else word
strs[index] = '' if len(tmp) == 1 else ','.join(tmp[1:])
S******6
发帖数: 55
25
来自主题: JobHunting版 - Memory Limit Exceeded 错误
一道很简单的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;
... 阅读全帖
t***o
发帖数: 1353
26
来自主题: SanFrancisco版 - 硅工强人, 帮忙写个regular expression
硅工强人, 帮忙写个regular expression
$str = 'controller/today' will return today
$str = 'controller/today123' will return today123
$str = 'controller/crazy' will return crazy
$str = 'controller/about' will not return anything.
$str = 'controller/help' will not return anything.
basically if everything after "controller/" is NOT "about", "help","feedback
", return whatever it is.
if it is "help", "about", "service", do not return anything.
tried
?!^, ^?!, [^],
none of them works.
it has to be completed i... 阅读全帖
s********n
发帖数: 943
27
来自主题: SanFrancisco版 - Google 奇葩三姐面试官 (转载)
【 以下文字转载自 JobHunting 讨论区 】
发信人: xingyueyangz (xingyueyangzi), 信区: JobHunting
标 题: Google 奇葩三姐面试官
发信站: BBS 未名空间站 (Wed Sep 16 14:43:12 2015, 美东)
一个三姐,在google工作了将近10年。考了一道超级简单的题:
给一个字符串,比如 aaabbbbccddd,返回最长的连续相同字符的子串。
这个例子,应该返回bbbb。
代码还快写完,其中有一句是
for(int i = 1; i < str.size(); i++){
这里访问 str[i]
}
然后她非说当str的size是1时,我code有问题,因为访问str[i]越界了。
我说当size是1的时候循环进不去啊,condition i 她说能进去,刚开始进入循环的时候不check condition。。
当时我就无语了。。我想着你丫是怎么进google的,还待了那么多年。
还是说丫的故意找茬黑我呢。。但这个点黑的也太2了吧。。。
a*p
发帖数: 62
28
来自主题: Database版 - how to query chinese in mysql?
没人回答我,赫赫,我自己想了个笨办法:
因为我用的PHP也不支持unicode,我就:
数据库出来的数据再用unicode_like_compare做过滤,应该可以在很大程度上解决问题。
这个应该还是暂时方案吧,等mysql的unicode support吧。
function to_unicode_like($str) {
$r = "";
for ($i=0;$i $ch = substr($str,$i,1);
if (ord($ch) < 127) $r .= " $ch";
else {
if ($i == strlen($str)-1) $r .= $ch;
else {
$r .= substr($str,$i,2);
b****u
发帖数: 1130
29
来自主题: Java版 - 一个多线程问题
类里面如果有个方法是
public String getString(){return str;}
另一个方法
public synchronized void put(String str){this.str = str;}
有没有有可能getString()只取到部分的str,然后put()就执行?
b**l
发帖数: 51
30
or this, works on both 32-nit and 64-bit:
====
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
import java.util.prefs.Preferences;
public class WinRegistry {
// inspired by
// http://javabyexample.wisdomplug.com/java-concepts/34-core-
java/62-java-registry-wrapper.html
// http://www.snipcode.org/java/1-java/23-java-class-for-accessing-
reading-and-writing-... 阅读全帖
y**********0
发帖数: 425
31
来自主题: Programming版 - 数组指针的问题
数组名字就相当于一个指针,
比如char str[20];
...
str[1]和*(str+1)是一样的,但是 str++是错误的,而++str是正确的呢。如果不知道
这个,很难发现错误的。我仔细看了答案才知道。
a****m
发帖数: 693
32
#include
#include
#include
using namespace std;
// this function removes trailing spaces from x
void trim (char *str, int size )
{
int i;

/* remove the null terminator */
for ( i = size; i >0; i=i-1 )
{
if ( str[i] == '\n' || str[i]=='\t' || str[i]==' ' )
{
str[i-1] = '\0';
/* we're done, so just exit the function by returning */
return;
}
}
/* if we get all the way to her... 阅读全帖
y**********u
发帖数: 6366
33
来自主题: Programming版 - 我发现我老饭一个错
判断一个c str是不是为空字符串的时候
老用 if (str && strlen (str) != 0)
现在发现
if (str && str[0] != '\0')
更好啊
G****u
发帖数: 51
34
I think it does matter what str points to. If it points to something in
function stack (destroyed after function exits), then return (str) is wrong,
just like what fun1 does. However, if it points to something that has a
storage duration throughout the lifetime of program, then it is correct,
just like char *str = "ABC".
This is why I cannot understand your explanation of why fun2 is correct. yes
,
the caller get the value (the address to something) of str, but if something
is stored in functi... 阅读全帖
w*****1
发帖数: 15
35
来自主题: Programming版 - A string replacement problem from leetcode
void my_replace(char *str, const char *pattern) {
if (str == NULL || pattern == NULL) return;
char *pSlow = str, *pFast = str;
int pLen = strlen(pattern);
while (*pFast != '\0') {
bool matched = false;
while (isMatch(pFast, pattern)) {
matched = true;
pFast += pLen;
}
if (matched)
*pSlow++ = 'X';
// tricky case to handle here:
// pFast might be pointing to '\0',
// and you don't want to increment past it
if (*pFast != '\0')
*pSlow++... 阅读全帖
p******s
发帖数: 938
36
来自主题: Unix版 - [转载] UNIX下的strtok
【 以下文字转载自 Programming 讨论区 】
【 原文由 phageous 所发表 】
要利用strtok来进行一些string的操作,结果却是segmentation fault,
code如下:
#include
#include
void main() {
char *str;
char *line="15:wildwood.eecs.umich.edu:018032:24.79 wildwood.eecs.umich.edu:018031:21.11 wildwood.eecs.umich.edu:018044:14.83 wildwood.eecs.umich.edu:018093:4.32";
str=strtok(line, ":");
printf("First token is %s\n", str);
while( (str=strtok(NULL, ":")) !=NULL)
printf("Next token is %s \n", str
r****y
发帖数: 1437
37

suppose string
str = 'y =3*x^2+5*x^7'
idx = findstr(str, '*');
ind = findstr(str, '^');
coefficient = str2num(str(idx-1));
power = str2num(str(ind+1));
If your coefficient and power can be real number, needs more
positioning statement.
t******m
发帖数: 255
38
来自主题: Quant版 - C++ 问题
Because when you used sstr to read "11 22", you reached the end of the
stream. You need to clear the state.
#include
#include
using namespace std;
int main()
{
istringstream sstr;
sstr.str("11 22");
cout< int i , j;
sstr>>i>>j;
cout<<"i="< cout< sstr>>i>>j;
cout<<"i="<
d*********d
发帖数: 239
39
编了个MACRO程序想把 一个字符串 q1 q2 q5-q8 变成 q1#q2#q5-q8
原始程序如下
OPTIONS MPRINT;
OPTIONS SYMBOLGEN;
%MACRO convert(pound);
%DO i = 1 %TO %SYSFUNC(COUNTW(£,%STR( )));
%IF &i = 1 %THEN %LET list = %QSYSFUNC(SCAN(£,&i,%STR( )));
%ELSE %LET list = &list%STR(#)%QSYSFUNC(SCAN(£,&i,%STR( )));
%END;
%MEND convert;
%PUT %convert(q1 q2 q5-q8);
不给最终结果。mprint显示到q1#q2生成了,但不生成最后结果。程序也没出错。
当我把%DO循环改成
%DO i = 1 %TO %EVAL(%SYSFUNC(COUNTW(£,%STR( )))+1);
维持其他不变,就可以得到最终结果。
虽然得到了最终结果,但不明白为什么循环部分要加1.COUNTW结果... 阅读全帖
b*****n
发帖数: 2324
40
来自主题: Military版 - est