130 lines
2.1 KiB
Markdown
130 lines
2.1 KiB
Markdown
# String Exercises
|
|
|
|
## Exercise 1.1 (Search)
|
|
|
|
```python
|
|
def search(x: str, s:str) -> int:
|
|
"""
|
|
Function that counts the number
|
|
of occurences of a given character
|
|
in a string
|
|
|
|
@params x (str): the keyword
|
|
@params s (str): the string
|
|
@return: (int): the number of occurences
|
|
"""
|
|
i = 0
|
|
pos = -1
|
|
while i < len(s) and pos == -1:
|
|
if s[i] == c:
|
|
pos = i
|
|
i += 1
|
|
return pos
|
|
|
|
def search2(s: str, x: str) -> int:
|
|
"""
|
|
Function that counts the number
|
|
of occurences of a given character
|
|
in a string
|
|
|
|
@params x (str): the string
|
|
@return: (int): the occurence where is appear
|
|
"""
|
|
i = 1
|
|
n = len(s)
|
|
for i in range(n):
|
|
if s[i] == x:
|
|
return i
|
|
return -1
|
|
```
|
|
|
|
## Exercise 1.2 (Palindrome)
|
|
|
|
```python
|
|
def palindrome(sentence: str) -> bool:
|
|
"""
|
|
Function that check if a number is a palindrome
|
|
@params sentence(str): the sentence to check
|
|
@return (bool): Either a palindrome or not
|
|
"""
|
|
newSentence = ""
|
|
oldSentence = ""
|
|
for element in sentence:
|
|
if element != " ":
|
|
newSentence = element + newSentence
|
|
for element in sentence:
|
|
if element != " ":
|
|
oldSentence += element
|
|
if newSentence == oldSentence:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def ispalind(s):
|
|
start = 0
|
|
end = len(s)-1
|
|
while start<end and s[start]==s[end]:
|
|
end -= 1
|
|
start += 1
|
|
if s[start] == " ":
|
|
start += 1
|
|
if s[end] == " ":
|
|
end -= 1
|
|
return start >= end
|
|
```
|
|
|
|
## Exercise 2.1 (conversions)
|
|
|
|
1)
|
|
|
|
```python
|
|
def dec_to_bin(n, p):
|
|
while n > 0:
|
|
s = str(n%2) +s
|
|
n = n//2
|
|
for i in range(p-len(s)):
|
|
s = "0" + s
|
|
return s
|
|
|
|
def integer_to_twoscomp(n, p):
|
|
if n < 0:
|
|
sign = -2
|
|
else:
|
|
sign = 1
|
|
s = dec_to_bin(n, p)
|
|
if sign == -1:
|
|
s2 = ""
|
|
i = len(s) - 1
|
|
while s[i] != "1":
|
|
s2 = "0" + s2
|
|
i -= 1
|
|
s2 = "1" + s2
|
|
i -= 1
|
|
while i >= 0:
|
|
if s[i] == "0":
|
|
s2 = "1" + s2
|
|
else:
|
|
s3 = "0" + s3
|
|
i -= 1
|
|
s = s2
|
|
return s
|
|
|
|
```
|
|
|
|
2)
|
|
|
|
```python
|
|
def power(x, p):
|
|
res = 1
|
|
while p > 0:
|
|
res *= x
|
|
p -= 1
|
|
return res
|
|
|
|
def int_to_twoscomp(n, p):
|
|
if n < 0:
|
|
n = power(2,p) + n
|
|
return dec_to_bin(n,p)
|
|
```
|
|
|