숫자와 알파벳 문자를 포함하는 문자열 str을 제공했습니다. 주어진 문자열에서 사용할 수 있는 연속적인 숫자 시퀀스로 표시되는 모든 숫자의 합을 찾아야 합니다.
12와 43의 합은 55입니다.
1, 2, 3의 합은 6입니다.
문자열에 숫자가 없으므로 출력에 0이 표시됩니다.
문제를 해결하기 위한 우리의 논리는 주어진 문자열에서 모든 숫자를 추출하여 합산하는 것입니다.
이 접근 방식에서는 isDigit() 메서드를 사용하여 현재 문자가 숫자인지 확인합니다. 또한 현재 숫자 값에 10을 곱하고 현재 문자가 숫자이면 현재 문자를 숫자에 더합니다.
1단계 - 'number' 및 'sum' 변수를 0으로 초기화합니다.
2단계 − 문자열을 반복하고 isDigit() 메서드를 사용하여 현재 문자가 0-9 사이인지 확인합니다.
3단계 - 현재 문자가 숫자인 경우 숫자 값에 10을 곱하고 현재 숫자 값을 더합니다.
4단계 - 현재 문자가 숫자가 아닌 경우 "number" 변수의 값을 "sum" 변수에 추가하고 "number" 변수의 값을 0으로 업데이트합니다.
5단계 − 루프 반복이 완료되면 'sum' 변수에 'number' 값을 더하고 sum 변수의 값을 반환합니다.
시간 복잡도 - 루프를 하나만 사용하기 때문에 O(n)입니다.
공간 복잡성 − O(1) 추가 공간을 사용하지 않기 때문입니다.
이 접근 방식에서는 문자의 ASCII 값을 사용하여 현재 문자가 숫자인지 확인합니다. 또한 문자열에서 숫자를 얻을 때까지 'number' 변수에 문자를 추가하고 atoi() 메서드를 사용합니다. 문자열에서 숫자를 추출합니다.
1단계 - 'number' 변수를 정의하고 빈 문자열로 초기화합니다. 또한 'sum' 변수를 정의하고 0으로 초기화합니다.
2단계 − for 루프를 사용하여 문자열을 순회하고 문자열의 각 문자를 가져옵니다.
3단계 - c-'0'이 0보다 크거나 같고 9보다 작거나 같으면 현재 문자가 숫자임을 의미합니다.
4단계 − 현재 문자가 숫자인 경우 '숫자' 문자열에 추가합니다.
5단계 − 현재 문자가 숫자가 아닌 경우 c_str() 메서드를 사용하여 숫자 문자열을 문자 배열로 변환하고 이를 atoi() 메서드의 매개변수로 전달하여 문자열을 숫자로 변환합니다. . 또한 숫자 문자열을 "" 값으로 업데이트합니다.
atoi() 메서드는 문자열이 숫자로 변환 가능한 경우 숫자를 반환하고, 그렇지 않으면 0을 반환합니다.
6단계 − for 루프의 반복이 완료되면 다시 atoi() 메서드를 사용하여 문자열을 숫자로 변환하고 합계 값에 더합니다.
시간 복잡도 - O(N)
공간 복잡성 − O(1)
이 방법에서는 정규 표현식을 사용하여 모든 숫자와 일치하는 항목을 찾습니다. 그런 다음 문자열을 숫자로 변환하여 합계 변수에 추가할 수 있습니다.
1단계 − 정규식 패턴을 정의합니다.
2단계 − regex_search() 메서드를 사용하여 숫자 문자열과 일치하는 항목을 찾습니다.
3단계 − 일치하는 항목을 찾는 동안 while 루프를 사용하여 반복합니다.
4단계 − while 루프에서 stoi() 메서드를 사용하여 문자열을 숫자로 변환하고 이를 sum 변수에 추가합니다.
5단계 - 다시 match().suffix() 메서드를 사용하여 문자열을 업데이트합니다. 이렇게 하면 중복된 일치 항목을 얻을 수 없습니다.
시간 복잡도 − O(N), 정규식은 문자열을 반복하여 일치하는 항목을 찾습니다.
공간 복잡성 − O(1)
우리는 문자열에서 연속된 숫자의 합을 구하는 세 가지 방법을 배웠습니다. 마지막 방법은 정규식을 사용하기 때문에 가장 최적화된 코드입니다. 그러나 초보자에게는 정규식 작업이 어려울 수 있습니다.
위 내용은 주어진 문자열에서 연속된 숫자의 합을 구하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!