[검 지 offer 솔 문제 노트] 수 치 를 나타 내 는 문자열
1866 단어 Algorithm
문자열 이 수 치 를 표시 하 는 지 여 부 를 판단 하 는 함 수 를 실현 하 십시오 (정수 와 소수 포함).예 를 들 어 문자열 '+ 100', '5e2', '- 123', '3.1416' 과 '- 1E - 16' 은 모두 수 치 를 나타 낸다.그러나 '12e', '1a 3.14', '1.2.3', '+ - 5', '12e + 4.3' 은 모두 아니다.
제목 분석:
이 문 제 는 기본적으로 알고리즘 지식 과 관련 되 지 않 고 주로 여러 가지 상황 에 대한 고려 의 전면 성 을 고찰 한다.
처음 받 았 을 때 대충 봤 더 니 상황 이 극 에 달 할 것 같 았 다.생각 을 정리 한 후에 코드 의 유 니 버 설 성 을 강하 게 해 야 한 다 는 것 을 알 게 되 었 는데 사실은 몇 가지 규칙 으로 요약 할 수 있다.
현재 문자 가 다음 과 같은 경우:
요약 하면 e / E 가 나타 나 면 새로운 시각 적 의미 에서 의 숫자 1 위 를 다시 업데이트 할 수 있 는 기술 이 있 습 니 다. 그 뒤의 문 자 는 새로운 숫자 로 정의 할 수 있 기 때문에 e / E 나 소수점 이 다시 나타 나 면 안 됩 니 다.
AC 코드:
# -*- coding:utf-8 -*-
class Solution:
# s
def isNumeric(self, s):
num_end_pos = len(s) - 1
num_start_pos = 0
e_mark = False
dot_mark = False
for i in range(num_end_pos+1):
num = s[i]
if num in '+-':
if i > num_start_pos: return False
elif num.isdigit(): continue
elif num in '.':
if not num_start_pos < i < num_end_pos or e_mark or dot_mark: return False
else: dot_mark = True
elif num in 'eE':
if not num_start_pos < i < num_end_pos or e_mark: return False
else:
e_mark = True
num_start_pos = i + 1
else:
return False
return True
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
두 가지 전체 배열 (중복수와 무중복수) 의 귀속 실현1. 중복수가 없습니다. 예: abc, 출력: abc\acb\bac\bca\cab\cba. 분석: 순서는 매번 알파벳을 첫 번째 문자로 취하고 뒤의 하위 문자열은 이 과정을 반복하며 전형적인 귀착이다. 2. 중복수가...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.