2016-06-09 2 views
1

안녕하세요 생물 학자입니다. 약간의 코딩 배경이 있습니다. 내 목표는 문자의 문자열을 입력하고 코드가 발생하는 횟수와 문자열의 어느 위치에 있는지 알려주는 것입니다. 아픈 문자열을 입력하고 난 문자열과 sq 및 tq의 위치와 풍요를 원한다. 위치가 예를 들어 njnsqjjfl 평방 postition에 위치 할 것이다 첫 번째 문자 인 상태 4.문자열 내의 위치와 반복 문자

이 고맙다는 필자

string S = "..."; 
int counter =0; 
for(int i=0; i<s.length; i++){ 
if(s.charAt (i) == 'sq')} 
counter++;}) 

string S = "..."; 
int counter =0; 
for(int i=0; i<s.length; i++){ 
if(s.charAt (i) == 'tq')} 
counter++;}) 

어떤 입력이 도움이 될 것입니다 지금까지 (아마도 매우 잘못)와 함께 올 것

입니다
+0

가능한 복제 [문자열에서 문자의 n 번째 발생을 찾는 방법?] (http://stackoverflow.com/ String.indexOf 참조하여 주위에 루프를 원하는 질문/3976616/how-to-find-nth-occurrence-of-a-string) – Gideon

답변

-1

String 부분을 얻으려면 charAt이 아니라 substring을 사용해야합니다.

int count(String s, String target) { 
    int counter = 0; 
    int tlen = target.length(); 
    for (int i = tlen; i < s.length(); i++) { 
     if (s.substring(i - tlen, i).equals(target)) { 
      counter++; 
     } 
    } 
    return counter; 
} 

// in some method 
count("...", "sq"); 
count("...", "tq"); 
+0

은 카운트를 제공하지만 '문자열의 어떤 위치가 아니며' –

1

그래서, 당신은 "스퀘어"및 코드에서 "TQ"여러 번 할 수 있습니다, 그래서 당신은 (그들을 함께 저장하거나 하나)이 별도로 두 가지를 저장하는 2 arraylists을 가질 수 있습니다.

ArrayList<Integer>sqLocation = new ArrayList<>(); 
ArrayList<Integer>tqLocation = new ArrayList<>(); 
for(int i =0;i<s.length()-1;i++){ 
if(s.charAt(i)=='s' && s.charAt(i+1)=='q'){ 
    sqLocation.add(i); 
    } 
else if(s.charAt(i)=='t' && s.charAt(i+1)=='q'){ 
    tqLocation.add(i); 
    } 
} 
System.out.println("No. of times sq occurs = "+sqLocation.size()); 
System.out.println("Locations ="+sqLocation); 
System.out.println("No. of times tq occurs = "+tqLocation.size()); 
System.out.println("Locations ="+tqLocation); 
+0

두 개가 별 –

+0

도와 드리겠습니다 :) –

0

이것은 정규식을 사용하여 얻을 수 있습니다. 유스 케이스는 발생 횟수와 해당 발생 위치를 계산하는 것입니다. 메소드 경기는 위치와 수를 정수 목록이 목록의 크기

Exmaple 코드를 반환

당신이 원하는 것은
public class RegexTest { 
    public static List<Integer> match(String text, String regex) { 
     List<Integer> matchedPos = new ArrayList<>(); 
     Matcher m = Pattern.compile("(?=(" + regex + "))").matcher(text); 
     while(m.find()) { 
      matchedPos.add(m.start()); 
     } 

     return matchedPos; 
    } 

    public static void main(String[] args) { 
     System.out.println(match("sadfsagsqltrtwrttqsqsqsqsqsqs", "sq")); 
     System.out.println(match("sadfsagsqltrtwrttqksdfngjfngjntqtqtqtqtqtq", "tq")); 
    } 
} 
0

HashMap <String, List <Integer>>

이, 당신이 찾고있는 문자열을 개최합니다 예 sq 또는 tq 및 그들이있는 위치 목록.

당신은 https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#indexOf(java.lang.String,%20int)

psuedocode되는

String contents = "sadfsagsqltrtwrttqksdfngjfngjntqtqtqtqtqtq"; 

map.add (lookFor, new ArrayList()); 

int index = 0; 
while ((index = contents.indexOf (lookFor, index)) != -1) { 

    list = map.get (lookFor); 
    list.add (index); 
}