NC331. 重复的子字符串
描述
示例1
输入:
"skjl"
输出:
false
示例2
输入:
"nowcodernowcoder"
输出:
true
C 解法, 执行用时: 5ms, 内存消耗: 688KB, 提交时间: 2022-04-16
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 * * C语言声明定义全局变量请加上static,防止重复定义 */ #include<stdbool.h> bool repeatSubstring(char* str ) { int len=strlen(str); for(int i=1;2*i<=len;i++){ if(len%i==0){ bool flag=true; for(int j=i;j<len;j++){ if(str[j]!=str[j-i]){ flag=false; break; } } if(flag) return true; } } return false; }
Go 解法, 执行用时: 5ms, 内存消耗: 1216KB, 提交时间: 2022-06-19
package main func repeatSubstring(str string) bool { var f bool for h := len(str) >> 1; h >= 1; h-- { f = true for i := 0; i+h < len(str); i++ { if str[i] != str[i+h] { f = false break } } if f { return true } } return false }
Go 解法, 执行用时: 5ms, 内存消耗: 1264KB, 提交时间: 2022-04-10
package main //import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ func repeatSubstring( str string ) bool { var repeat bool for gap:=len(str)>>1;gap>=1;gap--{ repeat=true for i:=0;i+gap<len(str);i++{ if str[i]!=str[i+gap]{ repeat=false break } } if repeat{ return true } } return false }
Go 解法, 执行用时: 5ms, 内存消耗: 1320KB, 提交时间: 2022-06-02
package main /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ func repeatSubstring( str string ) bool { l := len(str) repeat := false for i := l / 2; i > 0; i-- { if l%i != 0 { continue } repeat = true y :=str[:i] for j:=1;j<l/i;j++{ x:=str[i*j:i*(j+1)] if x !=y { repeat = false break } } if repeat{ return true } } return false }
C 解法, 执行用时: 6ms, 内存消耗: 664KB, 提交时间: 2022-06-19
bool repeatSubstring(char* str ) { int h = strlen(str); for (int i = 1; 2 * i <= h; i++) { if (h % i == 0) { bool f = true; for (int j = i; j < h; j++) { if (str[j] != str[j - i]) { f = false; break; } } if (f) return true; } } return false; }