문자열 String 클래스 일반적인 알고리즘 문제

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 }

추천

출처www.cnblogs.com/ZengBlogs/p/12176544.html