简单题

1.HJ12字符串反转

2.HJ11数字颠倒

1
print(''.join(reversed(input())))

3.HJ54表达式求积

1
print(int(eval(input()))) # eval表达式求值

4.HJ106字符逆序

5.HJ76尼科彻斯定力

6.HJ75公共子串计算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

from operator import le
# awaabb
# aawbb

def solution(s1, s2):
maxlen = 0
if len(s1) >len(s2):
s1,s2 = s2,s1 # s1为较小的那个字符串
for i in range(len(s1)): # 0,1,2,3....
for j in range(i,len(s1)): #
if s1[i:j+1] in s2 and j+1 -i >maxlen: # s1截的所有子串,在s2匹配,并更新当前的最大值
maxlen = j+1-i
return maxlen
s = input()
t = input()
print(solution(s,t))

7.HJ86求最大连续bit数

1
2
3
4
5
data = int(input())
binary = '{:b}'.format(data) #11001000
data3 = [len(i) for i in binary.split('0')]
print(max(data3))

8.HJ85最长回文子串

1
2
3
4
5
6
7
8
9
10
11
12
13
14

while True:
try:
s = input()
res = []

for i in range(len(s)):
for j in range(i + 1, len(s) + 1):
if s[i:j] == s[i:j][::-1]:
res.append(j - i)
if res != "":
print(max(res))
except:
break

9.HJ100等差数列

1
2
3
4
5

n = int(input())
result = [i for i in range(2,3*n+2,3)] # 3*n+2最后一位
print(sum(result))

10.HJ87密码强度等级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

while True:
try:
s = input()
sc = 0
# 密码长度
if len(s) <= 4:
sc = sc + 5
elif len(s) <= 7:
sc = sc + 10
else:
sc = sc + 25

# 字母
isu = 0
isl = 0
for i in s:
if i.isupper():
isu = 1
break
for i in s:
if i.islower():
isl = 1
break
sc = sc + 10 * (isu + isl)

# 数字
shu = "0123456789"
count1 = 0
for i in s:
if i in shu:
count1 = count1 + 1
if count1 == 1:
sc = sc + 10
elif count1 > 1:
sc = sc + 20
else:
sc = sc

# 符号
fh = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"
count2 = 0
for i in s:
if i in fh:
count2 = count2 + 1
if count2 == 1:
sc = sc + 10
elif count2 > 1:
sc = sc + 25
else:
sc = sc

# 奖励
if isu + isl == 2 and count1 >= 1 and count2 >= 1:
sc = sc + 5
elif isu + isl > 1 and count1 >= 1 and count2 >= 1:
sc = sc + 3
elif isu + isl > 1 and count1 >= 1:
sc = sc + 2
if sc >= 90:
print("VERY_SECURE")
elif sc >= 80:
print("SECURE")
elif sc >= 70:
print("VERY_STRONG")
elif sc >= 60:
print("STRONG")
elif sc >= 50:
print("AVERAGE")
elif sc >= 25:
print("WEAK")
elif sc >= 0:
print("VERY_WEAK")
except:
break

中等题

1.HJ10字符个数统计

1
2
print(len(set(input().replace('\n',''))))

2.HJ46截取字符串

1
2
3
4

data = input()
k = int(input())
print(data[:k])

3.HJ60查找组成一个偶数最接近的两个素数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19


def isSuShu(n):
if n<=2:
return True
else:
for i in range(2,n):
if n % i ==0:
return False
else:
return True


data = int(input())
for i in range(int(data / 2), data):
if isSuShu(i) and isSuShu(data-i):
print(data-i)
print(i)
break

4.HJ40统计字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

data = input()

a = 0 # 空格
b = 0 # 数字
c = 0 # 其他
d = 0 # 字母

for i in data:
tmp = ord(i)
if tmp == 32:
a+=1 # 空格
elif 48 <=tmp <=57:
b+=1 # 数字
elif 65 <=tmp <=90 or 97 <=tmp <=122:
d+=1 # 字母
else:
c +=1

print(d)
print(a)
print(b)
print(c)

5.HJ14字符串排序

1
2
3
4
5
6
7

num = int(input())
stack = []
for i in range(num):
stack.append(input())
print("\n".join(sorted(stack)))

6.HJ5进制转换

1
2
3
4

data = input()
print(int(data,16)) # 16进制转10进制, int(xxx,16) hex:10进制转成16进制

7.HJ59找出字符串中第一个只出现一次的字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 方法1: Counter
from collections import Counter

data = input()
result = -1
c = Counter(data)
for i,v in c.items():
if v == 1:
result = i
break
print(result)

# 方法2: s.count(i)
s = input()
for i in s:
if s.count(i) == 1:
print(i)
break
else:
print('-1')

8.HJ58输入n个整数,输出其中最小的K个

1
2
3
4
5
6
7

n, k = list(map(int, input().split()))
num = list(map(int, input().split()))
num = sorted(num)
for i in num[:k]:
print(i, end=" ")

9.HJ81字符串字符匹配

1
2
3
4
5
6
7
s1 = set(input())
s2 = set(input())

if set(s1) & set(s2) == set(s2):
print('true')
else:
print('false')

__END__