2019年1月10日15:39:23 去掉了所有不必要的循环区间 还是超时 本地运行大概3s

#!/bin/python3

import math
import os
import random
import re
import sys # Complete the sherlockAndAnagrams function below.
def compareSubString(string1,string2):
num_string1 = [0]*26
num_string2 = [0]*26
for index in range (len(string1)):
temp = ord(string1[index]) - ord('a')
num_string1[temp] +=1
temp = ord(string2[index]) - ord('a')
num_string2[temp] +=1 if num_string1 == num_string2:
return True
else:
return False def sherlockAndAnagrams(s): #s <= 100
n = len(s)
count = 0
for index in range(n-1): #last one have no mean
for length in range(1, n - index): #only length between [1,n-1] passible have Anagrams
tempstring1 = s[index : index + length]
if (index + 1 <= n - length ):
for index2 in range(index + 1, n - length +1):
tempstring2 = s[index2: index2 + length]
if compareSubString(tempstring1 , tempstring2):
count +=1
return count if __name__ == '__main__':
# fptr = open(os.environ['OUTPUT_PATH'], 'w') q = 1 for q_itr in range(q):
s = 'zjekimenscyiamnwlpxytkndjsygifmqlqibxxqlauxamfviftquntvkwppxrzuncyenacfivtigvfsadtlytzymuwvpntngkyhw' result = sherlockAndAnagrams(s) print(result)

------

注意 anagrammatic  是拼字游戏的意思,任意调换顺序可以组成对方都成立,不是简单的回文数字。

------

1.第一种解法想省些时间 结果都比测试集少了20多个 应该是有些规则题目没有描述清楚。

5
ifailuhkqqhucpoltgtyovarjsnrbfpvmupwjjjfiwwhrlkpekxxnebfrwibylcvkfealgonjkzwlyfhhkefuvgndgdnbelgruel
gffryqktmwocejbxfidpjfgrrkpowoxwggxaknmltjcpazgtnakcfcogzatyskqjyorcftwxjrtgayvllutrjxpbzggjxbmxpnde
mqmtjwxaaaxklheghvqcyhaaegtlyntxmoluqlzvuzgkwhkkfpwarkckansgabfclzgnumdrojexnrdunivxqjzfbzsodycnsnmw
ofeqjnqnxwidhbuxxhfwargwkikjqwyghpsygjxyrarcoacwnhxyqlrviikfuiuotifznqmzpjrxycnqktkryutpqvbgbgthfges
zjekimenscyiamnwlpxytkndjsygifmqlqibxxqlauxamfviftquntvkwppxrzuncyenacfivtigvfsadtlytzymuwvpntngkyhw

399
471
370
403
428

#!/bin/python3

import math
import os
import random
import re
import sys # Complete the sherlockAndAnagrams function below.
def sherlockAndAnagrams(s):
n = len(s)
count = 0
# len = 1 && multi in string
for i in range(n):
for j in range(n):
if j > i:
if s[j] == s[i]:
count += 1
if j - i > 1:
count += 1 # repeat substring && huiwen substring
for start in range(n):
for end in range(n):
if end - start > 1: # substring len > 1
substring_num = 0
reverse_substring_num = 0
str1 = s[start:end]
str2 = s[end:]
str3 = str1[::-1]
substring_num = str2.count(str1)
reverse_substring_num = str2.count(str3)
count += substring_num
if str1 != str3: # avoid kkk
count += reverse_substring_num return count if __name__ == '__main__': s = 'zjekimenscyiamnwlpxytkndjsygifmqlqibxxqlauxamfviftquntvkwppxrzuncyenacfivtigvfsadtlytzymuwvpntngkyhw' result = sherlockAndAnagrams(s)
# fptr = open(os.environ['OUTPUT_PATH'], 'w')
#
# q = int(input())
#
# for q_itr in range(q):
# s = 'abba'
#
# result = sherlockAndAnagrams(s)
#
# fptr.write(str(result) + '\n')
#
# fptr.close()

2.看s 最大也就100 直接列出所有子串排序求和就行 但是发现会超时,本地运行需要十几秒。。。:

#!/bin/python3

import math
import os
import random
import re
import sys # Complete the sherlockAndAnagrams function below.
def sherlockAndAnagrams(s):
n = len(s)
count = 0
#find all substring
arr = []
for i in range(n):
for j in range(n+1):
if j > i:
arr.append(s[i:j])
# count
count = 0
for i in range(len(arr)):
for j in range(len(arr)):
if j>i and len(arr[i] )== len(arr[j]):
str1 = sorted(arr[i])
str2 = sorted(arr[j])
if str1 == str2 :
count += 1
return count if __name__ == '__main__': s = 'mqmtjwxaaaxklheghvqcyhaaegtlyntxmoluqlzvuzgkwhkkfpwarkckansgabfclzgnumdrojexnrdunivxqjzfbzsodycnsnmw' result = sherlockAndAnagrams(s)
# fptr = open(os.environ['OUTPUT_PATH'], 'w')
#
# q = int(input())
#
# for q_itr in range(q):
# s = 'abba'
#
# result = sherlockAndAnagrams(s)
#
# fptr.write(str(result) + '\n')
#
# fptr.close()

3.优化了下 改成字符串 还是超时:

#!/bin/python3

import math
import os
import random
import re
import sys # Complete the sherlockAndAnagrams function below.
def sherlockAndAnagrams(s):
n = len(s)
count = 0
#find all substring
arr = []
for i in range(n):
for j in range(n+1):
if j > i:
arr.append(s[i:j])
# count
count = 0
# for i in range(len(arr)):
# for j in range(len(arr)):
# if j>i and len(arr[i] )== len(arr[j]):
# str1 = sorted(arr[i])
# str2 = sorted(arr[j])
# if str1 == str2 :
# count += 1 for i in range(len(arr)):
temp = "".join(sorted(arr[i]))
arr[i] = temp for i in range(len(arr)):
for j in range(i,len(arr)):
if j>i and len(arr[i] )== len(arr[j]) and arr[i] == arr[j]:
count += 1
return count if __name__ == '__main__': s = 'ifailuhkqqhucpoltgtyovarjsnrbfpvmupwjjjfiwwhrlkpekxxnebfrwibylcvkfealgonjkzwlyfhhkefuvgndgdnbelgruel' result = sherlockAndAnagrams(s) print(result)
# fptr = open(os.environ['OUTPUT_PATH'], 'w')
#
# q = int(input())
#
# for q_itr in range(q):
# s = 'abba'
#
# result = sherlockAndAnagrams(s)
#
# fptr.write(str(result) + '\n')
#
# fptr.close()

HR_Sherlock and Anagrams_TIMEOUT[UNDONE]的更多相关文章

  1. IIS FTP Server Anonymous Writeable Reinforcement, WEBDAV Anonymous Writeable Reinforcement(undone)

    目录 . 引言 . IIS 6.0 FTP匿名登录.匿名可写加固 . IIS 7.0 FTP匿名登录.匿名可写加固 . IIS >= 7.5 FTP匿名登录.匿名可写加固 . IIS 6.0 A ...

  2. C++ Standard Template Library STL(undone)

    目录 . C++标准模版库(Standard Template Library STL) . C++ STL容器 . C++ STL 顺序性容器 . C++ STL 关联式容器 . C++ STL 容 ...

  3. Codeforces 1154 - A/B/C/D/E/F/G - (Undone)

    链接:https://codeforces.com/contest/1154 A - Restoring Three Numbers - [水] #include<bits/stdc++.h&g ...

  4. Gym 101606 - A/B/C/D/E/F/G/H/I/J/K/L - (Undone)

    链接:https://codeforces.com/gym/101606 A - Alien Sunset 暴力枚举小时即可. #include<bits/stdc++.h> using ...

  5. Codeforces 677 - A/B/C/D/E - (Undone)

    链接: A - Vanya and Fence - [水] AC代码: #include<bits/stdc++.h> using namespace std; ; int n,h; in ...

  6. Codeforces 1114 - A/B/C/D/E/F - (Undone)

    链接:http://codeforces.com/contest/1114 A - Got Any Grapes? 题意:甲乙丙三个人吃葡萄,总共有三种葡萄:绿葡萄.紫葡萄和黑葡萄,甲乙丙三个人至少要 ...

  7. 2016ACM/ICPC亚洲区沈阳站 - A/B/C/E/G/H/I - (Undone)

    链接:传送门 A - Thickest Burger - [签到水题] ACM ICPC is launching a thick burger. The thickness (or the heig ...

  8. Codeforces 1043 - A/B/C/D/E/F - (Undone)

    链接:http://codeforces.com/contest/1043 A - Elections - [水水水水题] 题意: 我和另一个人竞争选举,共有 $n$ 个人投票,每个人手上有 $k$ ...

  9. VS中特殊的注释——TODO/UNDONE/HACK的使用

    在代码的后面添加形如下面注释: //TODO: (未实现)…… //UNDONE:(没有做完)…… //HACK:(修改)…… 等到再次打开VS的时候,找到 :视图>任务列表 即可显示所有带有T ...

随机推荐

  1. oracle事务的四个特性(ACID)

    事务产生的背景 当在PL/SQL中同时操作多个SQL语句,比如通过DML语句添加.修改或删除数据时,如何确保数据库数据不会因为意外而倒置错误数据是一个非常重要的问题. 以仓库发料系统为例,如果某一张领 ...

  2. POJ1108_Split Windows 解题报告

    Split Windows 题目链接:http://poj.org/problem?id=1108 题目大意: 给你一棵二叉树的先序遍历,有三种字符:|.-.A~Z,然后用窗口表示出来,|: 表示将当 ...

  3. Oracle 条件判断函数decode和case when then案例

    --decode条件判断函数 ,,,,,) from dual --需求:不通过连表查询,显示业主类型名称列的值 ,,,'商业','其他') from t_owners --case when the ...

  4. Android——MaterialDesign之三NavigationView

    NavigationView的使用 这里我们来讲讲在Android5.0之后推出的NavigationView的具体使用方式.和普通的侧拉菜单制作方式一样,首先所有的东西还是都放在一个DrawerLa ...

  5. kibana——es的批量操作

    一·_mget: 1.创建的索引如下: 2.批量查询: #查询两个 GET _mget { "docs":[ { "_index":"testdb&q ...

  6. WPF设置软件界面背景为MediaElement并播放视频

    在我们的常见的软件界面设计中我们经常会设置软件的背景为SolidColorBrush或者LinerColorBrush.RadialGradientBrush 等一系列的颜色画刷为背景,有时我们也会使 ...

  7. static关键字的用法

    静态变量和静态方法 static关键字的基本用法: 1.修饰变量:被static修饰的变量属于类变量,可以用类名.变量名来引用,而不用直接new一个对象来引用. 2.修饰方法:被static修饰的方法 ...

  8. MyBatis的XML中使用内部类的方式

    内部类需要使用$符号连接,而不是点.,如 com.pingan.job.openapi.model.SMSESBResult$ReceiveResult$ResultInfo 从CSDN论坛查到的. ...

  9. 剖析插件 DataTable 自定义列表列get请求如何书写传递的参数

    重点代码Demo 已用 斜体标注 后端flask: @task_mgm.route('/taskinfo_editID=<int:num>', methods=['GET', 'POST' ...

  10. 一、MyCat的搭建

    一.什么是mycat 简单直接点就是,MyCat其实就是一个数据库的中间件!一般我们都是app直接到数据库!有了MyCat以后,就是app到MyCat然后再访问数据库. mycat是个中间件,它负责连 ...