2024년 6월 1일 (토)
Leetcode daily problem
https://leetcode.com/problems/score-of-a-string/?envType=daily-question&envId=2024-06-01
문자열 s가 주어졌을 때, 문자열을 구성하는 문자의 아스키 코드의 차이의 절대값 합을 반환한다.
예를 들어 s= "hello" 인 경우, 'h'는 104, e는 101, l은 108, o = 111 이면 |104-101| + |101-108| + |108-108| + |108-111| = 3 + 7 + 0 + 3 = 13 이다.
ascii values
주어진 문자열을 끝까지 순회하면서, 현재 인덱스의 원소의 아스키코드와 다음 인덱스의 아스키코드의 차이의 절대값을 최종 값을 반환할 변수에 업데이트 한다. 이때 탐색 할 때 인덱스 다음 원소의 값을 할당하므로, 탐색은 첫번째 인덱스에서 문자열의 인덱스길이의 -1까지만 탐색해야 인덱스 오류가 나지 않는다.
class Solution:
def scoreOfString(self, s: str) -> int:
ans = 0
for i in range(len(s)-1):
ans += abs(ord(s[i])-ord(s[i+1]))
return ans
시간 복잡도
주어진 문자열은 한 번씩 탐색하므로 O(n)이 소요된다.
나머지 연산은 상수 연산이므로 O(1)이라 전체 시간 복잡도는 O(n) 이다.
공간 복잡도
상수의 값만 변수에 할당하므로 전체 공간 복잡도는 O(1) 이다.