80、字串匹配
題目要求:
判斷短字串是否在長字串**現
注意:雖然題目說只會輸入兩個字串,但是不加while還是會錯,所以應該吧while設為框架
ps:字串的 in 操作,只有切片完全一致才為true,亂序false
while
true
:try
: x =
input()
y =input()
flag =
true
for s in x:
flag = flag and
(s in y)
print
('true'
if flag else
'false'
)except
:break
81、真分數化為埃及分數
埃及分數:分子為1的分數,就是要求將分數拆為多個分子為1的分式
方法:分數的貪心演算法,準確的演算法表述應該是這樣的:
1、設某個真分數的分子為a,分母為b;
2、把c=(b/a+1)作為分解式中第乙個分數的分母;
3、將a-b%a作為新的a;
4、將b*c作為新的b;
5、如果a等於1,則最後乙個分數為1/b,演算法結束;
6、如果a大於1但是a能整除b,則最後乙個分數為1/(b/a),演算法結束;
否則重複上面的步驟。
while
true
:try
: a =
input()
.split(
'/')
up =
int(a[0]
) down =
int(a[1]
) res =
''# 返回值
while up !=1:
if down%
(up-1)
==0: res = res +
'1/'
+str
(down//
(up-1)
)+'+' up =
1else
: q = down//up
res = res +
'1/'
+str
(q+1)+
'+' up = up - down%up
down = down*
(q+1
)if down%up ==0:
down = down//up
up =
1 res = res +
'1/'
+str
(down)
print
(res)
except
:break
82、列表操作m,n=
list
(map
(int
,input()
.split())
)# map:函式 迭代器
exchange=
list
(map
(int
,input()
.split())
)
83、大寫字母的個數:
『a』.isupper()
『a』 <= s <= 『z』
84、最大回文子串的長度
理論支援:每當增加乙個新的字母,最大回文串的長度只能增加1或者2,不可能增加更多,並且,新的最大回文串必然要包含這個字母!
所以,從頭到尾掃瞄字串,每增加乙個新的字元,判斷以這個字元結尾,且長度為maxlen+1或者maxlen+2的子串是否為回文,如果是,
更新最大回文子串。**如下:
def
longestpalindrome
(s):
if s==s[::
-1]:
return
len(s)
maxlen=
0for i in
range
(len
(s))
:if i-maxlen>=
1and s[i-maxlen-
1:i+1]
==s[i-maxlen-
1:i+1]
[::-
1]: maxlen+=
2continue
if i-maxlen>=
0and s[i-maxlen:i+1]
==s[i-maxlen:i+1]
[::-
1]: maxlen+=
1return maxlen
while
true
:try
: a=
input()
if a:
print
(longestpalindrome(a)
)except
:break
85、最長重複值
輸入乙個byte數字,唬人的,就是input然後int處理一下。輸出最長連續的1的個數
直接用 in
while
true
:try
: n =
int(
input()
) n2 =
bin(n)[2
:]li =
list
(range
(len
(n2)))
li.reverse(
)for i in li:
s ='1'*
(i+1
)if s in n2:
print
(len
(s))
break
except
:break
86、密碼強度等級
知識點:acall匹配(數字、大寫字母、小寫字母、符號)
isupper()、islower()、isalpha()、isdigit()
也可以直接用大於小於等判定
核心部分如下:
alpha_list =
digit_list =
symbol_list =
for i in s:
if i.isalpha():
if i.isdigit():
else:l=
[0,0
]for i in alpha_list:
iford
(i)in
range(97
,123):
l[0]
=1iford
(i)in
range(65
,91):
l[1]
=1
87、撲克牌大小
邏輯問題,典型的華為考題,有時間可以做一下
88、24點遊戲標準答案是用窮舉的辦法,但是我覺得可以用揹包來求解
89、ip合法性檢查
方法1:正則匹配
方法2: 點分之後和0、255比較
while
true
:try
: nums =
list
(map
(int
,input()
.split(
".")))
flag =
0for i in
range
(len
(nums)):
if nums[i]
<
0or nums[i]
>
255:
flag =
1else
:pass
if flag ==0:
print
("yes"
)else
:print
("no"
)except
:break
90、動規棋盤路徑搜尋
91、簡單動規
華為2012機考ifif
昨天去參加了華為的校園招聘上機考試,題目一共三道,都比較簡單,不要求演算法效率,也不要求對所給資料的合法性作檢測,主要還是注重基礎知識的考察,和大家分享一下,希望對接下來的同學有所幫助。1 選秀節目打分,分為專家評委和大眾評委,score 陣列裡面儲存每個評委打的分數,judge type 裡儲存與...
華為上機考試
有乙個陣列a n 順序存放0 n 1,要求每隔兩個數刪掉乙個數,到末尾時迴圈至開頭繼續進行,求最後乙個被刪掉的數的原始下標位置。以8個數 n 7 為例 0,1,2,3,4,5,6,7 0 1 2 刪除 3 4 5 刪除 6 7 0 刪除 如此迴圈直到最後乙個數被刪除。輸入描述 每組資料為一行乙個整數...
華為2023年機考題
輸入兩個字串 都是字母 a到z每個字母有乙個權值 1 26 不區分大小 寫 哪個字母分配哪個權值由你決定 字串的權值就是字串中所有字母的權值之和 字串中的相同字母去掉,再分配權值 include includeusing namespace std int maxweight string str1...