2017-03-23 2 views
-2

Ich mache eine Aufgabe, in der mir gesagt wird, nach '-'s in Beispieldaten zu suchen, wenn a - in den Daten gefunden wird und es gibt nebeneinanderliegende Bindestriche innerhalb der Hashes, dies nur zählt für 1 Vorkommen, z In diesen Beispieldaten wäre die Antwort 4.Striche in Beispieldaten zählen

Ich begann mit der Erstellung eines 2D-Arrays, um es zu füllen, dann wollte ich nach den Bindestrichen im Array suchen, aber ich bin ein wenig verwirrt, wie ich eigentlich gehen würde Zählen der Vorkommen, Jede Hilfe wäre willkommen.

Hier ist, was ich bisher habe;

Scanner input = new Scanner(System.in); 
      int a = input.nextInt(); //no. of rows 
      int b = input.nextInt(); //no. of columns 

      String arr[][] = new String[a][b]; //array of strings of 10 x 20 
      for(int i = 0; i<a; i++){ 
       for(int j = 0; j<b; j++){ 
        arr[i][j] = input.next(); 
       } 
      } 
      //for test purposes 
      for(String[] s : arr){ 
       for(String e : s){ 
        System.out.print(e); 
       } 
      } 

Hier ist die Probe-Eingang:

10 20 
    #################--- 
    ##-###############-- 
    #---################ 
    ##-################# 
    ########---######### 
    #######-----######## 
    ########---######### 
    ##################-- 
    #################--- 
    ##################-# 
+4

Also im Grunde hast du keine Arbeit gemacht und erwartest, dass wir deine Hausaufgaben machen? – Idos

+0

Klingt wie. Aber ist ein interessantes Puzzle; das ist sicher. – GhostCat

+0

Erstellen Sie eine Variable 'Vorkommen' und erhöhen Sie sie jedes Mal um 1, wenn Sie einen Gedankenstrich finden. – winterfox

Antwort

1

einfachste Weg Regex zu verwenden. Betrachte jede Zeile als Zeichenfolge, trenne die Zeichenfolge und erlaube dann nur 20 Zeichen in der Zeichenfolge (basierend auf deiner Spaltenanzahl).

Andere Ansätze könnten DSL-Algos sein.

import java.util.Scanner; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

public class test { 
    public static void main(String... args) throws Exception { 
     Scanner input = new Scanner(System.in); 
     int a = input.nextInt(); // no. of rows 
     int b = input.nextInt(); // no. of columns 
     Pattern pattern = Pattern.compile("#(--+)#"); 
     int count = 0; 
     for (int i = 0; i < a; i++) { 
      String temp = input.next().trim(); 
      if (temp.length() > b) { 
       temp.substring(0, b); 
      } 
      Matcher matcher = pattern.matcher(temp); 
      if (matcher.find()) { 
       count++; 
      } 
     } 
     System.out.println(count); 
    } 
} 
+0

Das macht Ich dachte mir RegEx als eine Möglichkeit, die Muster zu überprüfen, aber ich war mir nicht sicher, wie ich es implementieren sollte, aber Sie haben es auf eine einfache und verständliche Art und Weise gemacht. – Huzzah

Verwandte Themen