今日头条笔试双生词

自己本地测没有问题啊?为什么提交就GG?很尴尬,头条笔试这是要招什么样的人了?
import sys
def rotateString(str, offset):
if offset == 0 or not str:
return str
offset %= len(str)
str = list(str)
str = reverse(str, 0, len(str))
str = reverse(str, 0, offset)
str = reverse(str, offset, len(str))
return ''.join(str)

def reverse(str, start, end):
while (start < end):
tmp = str[start]
str[start] = str[end - 1]
str[end - 1] = tmp
start += 1
end -= 1
return str
if __name__ == "__main__":
t = int(sys.stdin.readline().strip())
l = []
for i in range(t):
n = int(sys.stdin.readline().strip())
tmp = []
for j in range(n):
s1 = sys.stdin.readline().strip()
tmp.append(s1)
l.append(tmp)

for i in l:
if len(i[0])!=len(i[1]):
print('Sad')
continue
else:
flag = True
for j in range(len(i[0])):
kk = rotateString(i[0],j)
if kk==i[1] or ''.join(list(reversed(kk)))==i[1]:
print('Yeah')
flag = False
break
if flag:
print('Sad')

#字节跳动#
全部评论
同样,本地测试能过,但是提交就不行
点赞 回复 分享
发布于 2018-08-25 11:46
重点是时间复杂度要低于n平方
点赞 回复 分享
发布于 2018-08-26 10:17
package zijietiaodong; import java.util.Arrays; import java.util.Scanner; public class shuangshengci {     public static void main(String[] args) {         // TODO Auto-generated method stub         Scanner in = new Scanner(System.in);         int groupNUM = in.nextInt();         String[] RES = new String[groupNUM];         for(int i =0;i<groupNUM;i++) {             int rownum = in.nextInt();             String[] data = new String[rownum];             for (int j=0;j<rownum;j++) {                 data[j] = in.next();             }//对每组赋值后,再判断是不是双生词                 label:for(int row=0;row<data.length;row++) {                     for(int col=row+1;col<data.length;col++) {                         if(data[row].length()==data[col].length()) {                             for(int c=1;c<data[col].length();c++) {//处理字符串翻转                                 String str1 =data[row].substring(0,c);                                 String str2 =data[row].substring(c, data[col].length());                                 String newstr=str2+str1;                                 System.out.println("a=================="+str1);                                 System.out.println("a=================="+str2);                                 System.out.println("a=================="+newstr);                                 if(newstr.equals(data[col])) {                                     RES[i]="Yeah";                                     break label;                                                                      }                                 else if (new StringBuffer(newstr).reverse().toString().equals(data[col])) {                                     RES[i]="Yeah";                                     break label;                                 }                                                         }                         }                             }                 }             if(RES[i]==null) {                 RES[i]="Sad";             }         }         for(int i=0;i<RES.length;i++) {             System.out.println(RES[i]);         }              } } 可以对比下
点赞 回复 分享
发布于 2018-08-26 01:22
啧啧,刚开始我用双链表寻址做的,感觉跟傻子一样,非双一流垃圾大学,别喷我 importjava.util.Scanner; publicclassbaolisousuo {     //反转函数     publicstaticString reverse(String str)     {         StringBuilder sb=newStringBuilder(str);         String r_str=sb.reverse().toString();         returnr_str;     }     publicstaticvoidmain(String[] args) {           booleansign=false; // 标识符 判断都符不符合规定         Scanner sc=newScanner(System.in);         Scanner sc1=newScanner(System.in);         intcount=sc1.nextInt();         String[] strs=newString[count];         for(inti=0;i<count;i++)         {             strs[i]=sc.nextLine();         }         String str1=strs[0];         String reverse_str1=reverse(str1);       //反转第一个字符串         String zx_str=str1+str1;//正向字符串相加         String fx_str=reverse_str1+reverse_str1; //反向字符串相加           for(intj=1;j<count;j++)         {             sign=decide(zx_str,fx_str,strs[j]);         }         if(sign)         {             System.out.println("Yeah!!!!Success!!!!");         }         else         {             System.out.println("Fuck!!!!!Sad!!!!!!");           }       }       privatestaticbooleandecide(String zx_str, String fx_str, String str2) {         if(zx_str.contains(str2)||fx_str.contains(str2))         {             returntrue;           }         else         {             returnfalse;         }     } }
点赞 回复 分享
发布于 2018-08-25 18:19
和大家思路一样,正向找完,反向找,只有40通过率,有没有大佬全过的....没想到更优的
点赞 回复 分享
发布于 2018-08-25 13:46
笔试只是劝退的,有时笔试没过,公司也会打电话来的
点赞 回复 分享
发布于 2018-08-25 13:21
+1
点赞 回复 分享
发布于 2018-08-25 13:09
自测能过,提交过不了,原因是什么?有人能提示一下吗?
点赞 回复 分享
发布于 2018-08-25 13:04
数组越界访问,听ACM大佬说要用AC永动机解决。
点赞 回复 分享
发布于 2018-08-25 12:26
同样,本地测试能过,但是提交就不行
点赞 回复 分享
发布于 2018-08-25 12:26
我也是啊,我怎么自测都是对的,测试用例也过了,就是通过不了,哎。有问题
点赞 回复 分享
发布于 2018-08-25 12:08
关键投硬件岗的也是同样的编程题,一脸懵逼
点赞 回复 分享
发布于 2018-08-25 12:05
例子都是2个词, n可能是很多词
点赞 回复 分享
发布于 2018-08-25 12:03
该题40%, 交卷18分,怀疑人生。 import sys if __name__ == '__main__': n = int(sys.stdin.readline().strip()) for _ in range(n): strs = [] flag = False m = int(sys.stdin.readline().strip()) for i in range(m): line = sys.stdin.readline().strip() strs.append(line) for i in range(len(strs)-1): for j in range(i+1, len(strs)): str1 = strs[i] str2 = strs[j] for k in range(len(str2)): if str1[0] == str2[k]: str3 = str2[k:] + str2[:k] str41 = str2[:k+1] str42 = str2[k+1:] str4 = str41[::-1] + str42[::-1] if str1 == str3 or str1 == str4: flag = True if flag: print('Yeah') else: print('Sad')
点赞 回复 分享
发布于 2018-08-25 12:03
不就是循环右移and反转,全存了,然后逐个匹配么,我也是case0,自测通过
点赞 回复 分享
发布于 2018-08-25 12:02
纯暴力,一个O(tn^2)的算法,过了40
点赞 回复 分享
发布于 2018-08-25 12:02
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main {     public static StringBuffer build(StringBuffer str){         return str.append(str);     }     public static boolean compare(StringBuffer str1,StringBuffer str2,int size){         //正序         for(int i = 0;i < size;i++){             for(int j = 0;j < size;j++){                 if(str1.substring(i, i+size).equals(str2.substring(j, j+size))){                     return true;                 }else{                     if(str1.reverse().substring(i, i+size).equals(str2.reverse().substring(j, j+size))){                         return true;                     }                 }             }         }         return false;     }     public static void main(String[] args) {         Scanner in = new Scanner(System.in);                    int line = in.nextInt();    //行数                         for(int i = 0;i < line;i++){                  int strNum = in.nextInt();    //串数                  int size = 0;                  List<StringBuffer> strs = new ArrayList<StringBuffer>();                  for(int j = 0;j < strNum;j++){                      String string = in.next();                      StringBuffer str = new StringBuffer(string);                      strs.add(str);                  }                  for(int j = 0;j <strs.size()-1;j++){                      if(strs.get(j).length() != strs.get(j+1).length()){                          System.out.print("Sad");                      }else{                          StringBuffer str1 = build(strs.get(j));                          StringBuffer str2 = build(strs.get(j+1));                          int q = strs.get(j).length();                          if(compare(str1,str2,strs.get(j).length()/2) == true){                              System.out.print("yeah");                          }else{                              System.out.print("Sad");                          }                      }                  }             }     } }
点赞 回复 分享
发布于 2018-08-25 12:02
提交0 难受
点赞 回复 分享
发布于 2018-08-25 12:01
感觉难度很大,同样双生词  自己调试全能过 ,提交case0??
点赞 回复 分享
发布于 2018-08-25 11:59
我好像也是这个问题……不知道为什么原因就交卷了……炸了hhh
点赞 回复 分享
发布于 2018-08-25 11:58

相关推荐

AAA专业长城贴瓷砖刘大爷:这样的简历我会直接丢进垃圾桶,花里胡哨的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务