今日头条笔试双生词

自己本地测没有问题啊?为什么提交就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
我也是 不知道什么鬼
点赞 回复 分享
发布于 2018-08-25 11:45
我也是这个思路的,不对……
点赞 回复 分享
发布于 2018-08-25 11:46
哈哈   他们例子简单,换个其他的就凉了
点赞 回复 分享
发布于 2018-08-25 11:46
同样,本地测试能过,但是提交就不行
点赞 回复 分享
发布于 2018-08-25 11:48
提交不行+10086
点赞 回复 分享
发布于 2018-08-25 11:48
语法错误或者数组越界非法访问
点赞 回复 分享
发布于 2018-08-25 11:49
40%。估计还需要什么优化算法
点赞 回复 分享
发布于 2018-08-25 11:49
数组越界是什么原因?找不出来啊
点赞 回复 分享
发布于 2018-08-25 11:58
我好像也是这个问题……不知道为什么原因就交卷了……炸了hhh
点赞 回复 分享
发布于 2018-08-25 11:58
感觉难度很大,同样双生词  自己调试全能过 ,提交case0??
点赞 回复 分享
发布于 2018-08-25 11:59
提交0 难受
点赞 回复 分享
发布于 2018-08-25 12:01
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
纯暴力,一个O(tn^2)的算法,过了40
点赞 回复 分享
发布于 2018-08-25 12:02
不就是循环右移and反转,全存了,然后逐个匹配么,我也是case0,自测通过
点赞 回复 分享
发布于 2018-08-25 12:02
该题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
例子都是2个词, n可能是很多词
点赞 回复 分享
发布于 2018-08-25 12:03
关键投硬件岗的也是同样的编程题,一脸懵逼
点赞 回复 分享
发布于 2018-08-25 12:05
我也是啊,我怎么自测都是对的,测试用例也过了,就是通过不了,哎。有问题
点赞 回复 分享
发布于 2018-08-25 12:08
同样,本地测试能过,但是提交就不行
点赞 回复 分享
发布于 2018-08-25 12:26

相关推荐

点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务