Cerinta completa
Given a string of lowercase letters in the range ascii[a-z], determine the index of a character that can be removed to make the string a palindrome. There may be more than one solution, but any will do. If the word is already a palindrome or there is no solution, return -1. Otherwise, return the index of a character to remove.
Example
Either remove ‘b’ at index or ‘c’ at index .
Function Description
Complete the palindromeIndex function in the editor below.
palindromeIndex has the following parameter(s):
- string s: a string to analyze
Returns
- int: the index of the character to remove or
Input Format
The first line contains an integer , the number of queries.
Each of the next lines contains a query string .
Constraints
- All characters are in the range ascii[a-z].
Sample Input
STDIN Function
----- --------
3 q = 3
aaab s = 'aaab' (first query)
baa s = 'baa' (second query)
aaa s = 'aaa' (third query)
Sample Output
3
0
-1
Explanation
Query 1: “aaab”
Removing ‘b’ at index results in a palindrome, so return .
Query 2: “baa”
Removing ‘b’ at index results in a palindrome, so return .
Query 3: “aaa”
This string is already a palindrome, so return . Removing any one of the characters would result in a palindrome, but this test comes first.
Note: The custom checker logic for this challenge is available here.
Limbajul de programare folosit: python3
Cod:
#!/bin/python3
def is_pal(s, l, r):
while l < r:
if s[l] != s[r]:
return False
l += 1
r -= 1
return True
def palindromeIndex(s):
l, r = 0, len(s) - 1
while l < r and s[l] == s[r]:
l += 1
r -= 1
if l >= r:
return -1
if is_pal(s, l + 1, r):
return l
if is_pal(s, l, r - 1):
return r
return -1
if __name__ == '__main__':
q = int(input().strip())
out = []
for _ in range(q):
out.append(str(palindromeIndex(input().strip())))
print(*out, sep='\n')
Scor obtinut: 1.0
Submission ID: 464591096
Link challenge: https://www.hackerrank.com/challenges/palindrome-index/problem
