1. 문자열은 반전된다. 스트링의 특정 일부분은 반전된다.
1 공용 클래스 StringDemo { 2 // 方式一:转换为CHAR [] 3 공개 문자열 역방향 (문자열 STR, INT 에서 startIndex, INT 에서 endIndex) { 4 5 의 경우 (! STR = 널 ) { 6 CHAR [] = 도착 str.toCharArray (); 7 대 ( INT , X <Y; X = 시작 인덱스, Y = endIndex의 X ++, y-- ) { 8 숯 온도 = 도착 [X]; 9 도착 [X] = 도착 [Y]; 10 도착 [Y] = 온도; (11) } (12) (13)가 복귀 새로운 새 , 문자열 (ARR) 14 } 15 반환 널 ; 16 } (17). (18)가 // 번째 방법 : 문자열하여 접합 . 19 공개 문자열 reverse1 (STR 문자열 INT 에서 startIndex, INT 에서 endIndex) { 20는 IF (STR =! 널 ) { 21이다 // 파트 1. 22 문자열 reverseStr의 str.substring = (0 , 시작 인덱스) (23)이다 // 2 부 (24) 에 대해 ( INT에서 endIndex = I는, I> = 시작 인덱스, 난 - ) { 25 reverseStr + = ; str.charAt (I) (26)이다 } 27 // 3 부 28 . reverseStr str.substring = + (+ 1에서 endIndex ) 29 30 복귀 reverseStr , (31)은 (32) } (33)이 복귀 널 ; 34이다 } 35 // 세 가지 방법의 StringBuffer / StringBuilder에 대체 문자열하여 36 공용 문자열 reverse2을 (STR 문자열 INT 에서 startIndex, INT 에서 endIndex) { 37 IF (STR =!널 ) { 38 의 StringBuilder 빌더 = 새 의 StringBuilder (str.length ()); 39 40 // 第1部分 41 builder.append (str.substring (0 , 시작 인덱스)); 42 // 第2部分 43 대 ( INT , I>에서 startIndex =; I = endIndex의 난 - ) { 44 45 builder.append (str.charAt (I)); 46 } 47 // 第3部分 48 builder.append (str.substring (에서 endIndex + 1 )); 49 50 복귀 builder.toString (); 51 } 52 반환 널 ; 53 54 } 55 56 @Test 57 공공 공극 testReverse () { 58 문자열 STR = "ABCDEFG" ; 59 문자열 역방향 = reverse2 (STR, 2, 5 ); 60 에서 System.out.println (후진); 61 } 62 63 }
2. 다른 문자열에 문자열의 발생 수를 가져옵니다.
1 개 공용 클래스 StringDemo { 2 공개 INT getCount (문자열 mainStr 문자열 SUBSTR) { 3 INT mainLength = mainStr.length (); 4 INT subLength = subStr.length (); 5 INT의 카운트 = 0 ; 6 INT의 인덱스 = 0 ; 7 경우 (mainLength> = subLength) { 8 // 方式一: 9 // 잠시 (! (인덱스 = mainStr.indexOf (SUBSTR)) = -1) { 10 // 카운트 ++; (11) // = mainStr.substring mainStr (+ subStr.length 인덱스 ()); (12)가 // } 13 인 // 두 가지 방법을 개선 한 방법 14 그동안을 (! (인덱스 = mainStr.indexOf (SUBSTR, 인덱스)) = -1 ) { 15 COUNT ++ ; 16 지수 + = subLength] . 17 } 18이다 19. 리턴 COUNT; 20이다 } 밖의 { 21이 반환 0 ; 22이다 } 23이다 } 24 25 @Test (26)가 공개 보이드 testGetCount () { 27 문자열 mainStr = "abkkcadkabkebfkaabkskab" ; 28 문자열 SUBSTR = "AB" ; 29 INT의 개수 = getCount (mainStr, SUBSTR); 30 에서 System.out.println (COUNT); 31 } 32 }
두 개의 문자열 최대 동일한 문자열을 취득합니다.
. (1) 공용 클래스 StringDemo2 { 2 // 전제 : 최대 두 개의 문자열과 동일한 문자열 3. 공용 문자열 getMaxSameString (STR1 문자열, 문자열 STR2) { 4. IF ((PS)와 복수의 랜덤! = null의 && STR2 =! 널 ) { 5. 문자열 MAXSTR ? = (str1.length ()> = str2.length ()) STR1 : STR2] . 6 문자열 minStr = (str1.length () <str2.length ())? STR1 : STR2] . 7 INT의 길이 = minStr.length ( ) . (8) (9). 대 ( INT I = 0; I <길이; I ++ ) { 10 대 (INT X = 0, Y = 길이 - I, Y <= 길이; ++ X, Y는 ++ ) { 11. 문자열 = SUBSTR minStr.substring (X, Y) (12)는 IF ((SUBSTR maxStr.contains) {) (13)가 복귀 SUBSTR; 14 } 15 16 } . 17 } (18)이다 . (19) } (20)이 복귀 널 ; 21이다 } (22) 인 23 // 동일한 최대 길이 시퀀스의 존재 같은 다수의 경우 24 // 이때 문자열을 [] 돌아가, ArrayList를 후면 세트로 대체 될 수있다, 더 편리한 25 공개문자열 [] getMaxSameString1 (문자열 STR1, STR2 문자열) { 26 일 경우 (STR1! = null의 && STR2! = null이 {) 27 StringBuffer를 sBuffer = 새 의 StringBuffer (); 28 문자열 maxString = (str1.length ()> str2.length ())? STR1 : STR2; 29 문자열 minString = (str1.length ()> str2.length ())? STR2 : str1이; 30 (31) INT LEN = minString.length (); 32 대 ( INT는 I = 0; I <LEN; I ++ ) { 33 대 ( INTX = 0, Y는 = 렌 - 난; Y <= LEN; X ++, Y ++ ) { 34 문자열 문자열 = minString.substring (X, Y); 35 의 경우 (maxString.contains (문자열)) { 36 sBuffer.append (문자열 + "" ); 37 } 38 } 39 // 에서 System.out.println (sBuffer); 40 의 경우 (! sBuffer.length () = 0 ) { 41 체류 ; 42 } 43 } 44 문자열 [] 스플릿 sBuffer.toString = () 완전히 대체 ( "$", "") .split ( "\\". ); 45 돌아 분할; 46 } 47 48 복귀 널 ; 49 } 50 51 @Test 52 공공 공극 testGetMaxSameString () { 53 문자열 STR1 = "abcwerthello1yuiodefabcdef" ; 54 스트링 (STR2) = "cvhello1bnmabcdef" ; 55 문자열 [] = maxSameStrings getMaxSameString1 (STR1, STR2); 56 에서 System.out.println (Arrays.toString (maxSameStrings)); 57 58 } 59 60 }