Java 현재 문자열 찾기 최대 메타문자열 코드 공유
public class MaxHuiWen {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "abb";
MaxHuiWen(s);
}
//1.
public static void MaxHuiWen(String s){
//
int length = s.length();
//
String MaxString = "";
//
for(int i = 0 ; i < length ; i++){
for(int j = i ; j < length + 1 ; j++){
String s1 = s.substring(i , j);
// MaxString , MaxString
if(HuiWen(s1) && s1.length() > MaxString.length()){
MaxString = s1;
}
//System.out.println(s1);
}
}
// MaxString 2,
if(MaxString.length() >= 2){
System.out.println(MaxString);
}
else{
System.out.println(" ");
}
}
//2.
public static boolean HuiWen(String s){
boolean flag = true;
int length = s.length();
char s1[] = s.toCharArray();
// , , ,
for(int i = 0 , j = length - 1 ; i <= j ; i++ , j--){
if(s1[i] != s1[j]){
flag = false;
}
}
return flag;
}
}
문자열의 회문 판단
문자열이 회문인지 아닌지 판단하기
String T="madam"과 같은 문자열을 지정하는 문제 설명이 문자열이 회문인지 아닌지 판단하기
방법1: 1, 두 문자열 요소 포인터를 정의(java에 포인터의 개념이 없음 주의), int right=T.length()-1;int left=0;
2, 즉left는 왼쪽에서,right는 오른쪽에서 시작하여 가리키는 문자가 같은지 순서대로 비교하고, 같으면left++,right-를 비교한다.그렇지 않으면, 직접 되돌아오는 것은 회문이 아니다
while(left
코드:
/*
* 3:
*
* : , palindrome, , madam、 ,
* :
* : " " , " " ,
*/
public boolean isPalindrome(String s){
if(s==null)
return false;
int left=0;
int right=s.length()-1;
while(left
방법2: 회문 문자열은'madam'과 같이 모두 반전시키면 그 자체의'madam'을 얻어 두 문자열을 비교하고 서로 같으면 회문이다.
1, 문자열을 반전시키는 함수 구현
/*
*
*/
private String reverse(String str){
String strResult="";
for(int i=str.length()-1;i>=0;i--){
strResult+=str.charAt(i);
}
return strResult;
}
2, s, temp=reverse(s), temp.equals(s)
/*
* , , , ,
* O(n)
*/
public boolean isPalindrome2(String s){
String temp=reverse(s);
if(s.equals(temp))
return true;
else
return false;
}
2: 주어진 문자열의 최대 답장 문자열을 어떻게 구하는가
예를 들어 주어진 문자열 String T= Google은 가장 긴 메모 문자열'goog'을 어떻게 구합니까
1. 가장 간단하고 직접적인 생각은 문자열의 모든 하위 문자열을 찾아낸 다음에 각 하위 문자열이 회문인지 아닌지를 판단하고 기록하여 최대 길이의 회문을 구하는 것이다. * 알고리즘의 시간 복잡도는 O(n^3)이다.
/*
* 4,
* : , google , goog
* :
*1, : , , ,
* O(n^3)
*/
public String longestPalindrome1(String s){
String result=null;
String tempString="";
//
int max=0;
//
for(int i=0;ii;j--){
//
tempString=s.subStr( i, j+1);
// tempString (j-i+1)>max
if(isPalindrome(tempString)&&(j-i+1)>max){
max=j-i+1;
result=subString(i, j+1);
}
}
}
return result;
}
2. 두 번째 사고방식은 문자열의 모든 문자에 대해 T[i]를 판단하는 것이다.
T[i], T[i+1]을 중심으로 하는 짝수 길이의 하위 문자열은 회문입니다
T[i] 중심의 홀수 길이 하위 문자열이 메모인지 여부
public String longestPalindrome2(String T){
String result=null;
//
int max=0;
// ,
for(int i=0;i=0&&pEnd<=(T.length()-1)&&T.charAt(pStart)==T.charAt(pEnd)){
pStart--;
pEnd++;
}
// >max, =(pEnd-1)-(pStart+1)-1=pEnd-pStart-1
if(pEnd-pStart-1>max){
max=pEnd-pStart-1;
result=subString( pStart+1, pEnd-1+1);
}
// i ,
pStart=i-1;
pEnd=i+1;
while(pStart>=0&&pEnd<=(T.length()-1)&&T.charAt(pStart)==T.charAt(pEnd)){
pStart--;
pEnd++;
}
if (pEnd-pStart-1>max) {
max=pEnd-pStart-1;
result=subStrint(T, pStart+1, pEnd-1+1);
}
}
return result;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.