practivceAlgorithm/codeforce

[Codefroce][Python] div.3 #731 - B. Alphabetical Strings

findTheValue 2021. 10. 3. 04:23

a부터 좌우로 하나씩 연속되는 알파뱃을 붙혀가는 규칙.

s가 규칙으로 만들어진 문자열이면 YES를 출력.

얼마전 현대모비스 알고리즘 대회 2번?의 열화판

당시는 deque로 풀었지만 이번에는 twopointer로 양끝에서부터 한 규칙씩 거슬러 올라가 마지막에 a가 남는 것까지 확인하는 전략을 세웠습니다.

 

최초 시작은 start로 총 문자열 길이에서 소문자 a의 아스키코드 넘버만큼 더해주고 a를 제외하는 의미에서 1을 빼주면 마지막 문자의 아스키코드 넘버가 됩니다. 거기서부터 확인해주면 됩니다.

 

import sys
input = sys.stdin.readline

for test in range(int(input())):
    s = input().rstrip()
    left = 0
    right = len(s) - 1
    start = len(s) - 1  + ord('a')
    while left <= right:
        flag = 0
        if s[right] == chr(start):
            right -= 1
            start -= 1
            flag = 1
        elif s[left] == chr(start):
            left += 1
            start -= 1
            flag = 1
        if not flag:
            print('NO')
            break
    else:
        print('YES')