Résolution avec Ruby, Perl, Java et Python AtCoder Diverta 2019 Concours de programmation Manipulation de chaînes C

introduction

Ce thème

AtCoder diverta 2019 Programming Contest C - AB Substrings Difficulty: 911

Ce thème, opération de chaîne de caractères Ruby Chaque chaîne donnée est comptée par «BXA» BX «XA». Parmi ceux-ci, «BXA» devient «BXA» même si les «BXA» sont combinés, donc traitez-le d'abord pour réduire le nombre de «BXA». De même, même si «BXA» et «BX» sont combinés, c'est «BX», et même si «XA» et «BXA» sont combinés, c'est «XA», alors utilisez-le pour compter.

ruby.rb


n = gets.to_i
w = x = y = z = 0
n.times do |i|
  s = gets.chomp
  w += s.scan("AB").size
  if s[0] == "B"
    if s[-1] == "A"
      x += 1
    else
      y += 1
    end
  elsif s[-1] == "A"
    z += 1
  end
end
if x > 1
  w += x - 1
  x = 1
end
if [x, y, z].max == y
  w += x
  w += z
elsif [x, y, z].max == z
  w += x
  w += y
end
puts w

scan.rb


  w += s.scan("AB").size

Pour * Ruby *, s.scan (" AB "). Size compte le nombre de ʻAB`.

string.rb


    if s[-1] == "A"

C'est incroyable que vous puissiez accéder au dernier caractère avec [-1]. Python

python.py


import re

n = int(input())
w = x = y = z = 0
for i in range(n):
    s = input()
    t = re.sub(r'AB', "X", s)
    w += len(s) - len(t)
    if s[0] == "B":
        if s[-1] == "A":
            x += 1
        else:
            y += 1
    elif s[-1] == "A":
        z += 1
if x > 1:
    w += x - 1
    x = 1
if max(x, y, z) == y:
    w += x
    w += z
elif max(x, y, z) == z:
    w += x
    w += y
print(w)

len.py


    t = re.sub(r'AB', "X", s)
    w += len(s) - len(t)

Je ne suis pas familier avec les fonctions * Python *, donc je compte le nombre de ʻAB` à partir du nombre de caractères avant et après le remplacement. Perl

perl.pl


use List::Util qw/max/;

chomp (my $n = <STDIN>);
my ($w, $x, $y, $z);
for my $i (1..$n) {
  chomp (my $s = <STDIN>);
  $w++ while $s =~ /AB/g;
  if (substr($s, 0, 1) eq "B") {
    if (substr($s, -1, 1) eq "A") {
      $x++;
    } else {
      $y++;
    }
  } elsif (substr($s, -1, 1) eq "A") {
    $z++;
  }
}
if ($x > 1) {
  $w += $x - 1;
  $x = 1;
}
if (max($x, $y, $z) == $y) {
  $w += $x;
  $w += $z;
} elsif (max($x, $y, $z) == $z) {
  $w += $x;
  $w += $y;
}
print "$w\n";

reg.pl


  $w++ while $s =~ /AB/g;

Pour * Perl *, il existe un idiome. Après tout, Perl est idéal pour le traitement des caractères. Java

java.java


import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        int w = 0, x = 0, y = 0, z = 0;
        for (int i = 0; i < n; i++) {
            String s = sc.next();
            String t = s.replaceAll("AB", "X");
            w += s.length() - t.length();
            if (s.substring(0, 1).equals("B")) {
                if (s.substring(s.length() - 1, s.length()).equals("A")) {
                    x++;
                } else {
                    y++;
                }
            } else if (s.substring(s.length() - 1, s.length()).equals("A")) {
                z++;
            }
        }
        sc.close();
        if (x > 1) {
            w += x - 1;
            x = 1;
        }
        if (Math.max(x, Math.max(y, z)) == y) {
            w += x;
            w += z;
        } else if (Math.max(x, Math.max(y, z)) == z) {
            w += x;
            w += y;
        }
        System.out.println(w);
    }
}

replaceAll.java


            String t = s.replaceAll("AB", "X");
            w += s.length() - t.length();

Dans le cas de * Java *, le nombre de ʻAB` est compté à partir du nombre de caractères avant et après remplacement comme en Python.

Ruby Python Perl Java
Longueur du code 364 Byte 428 Byte 507 Byte 1071 Byte
Temps d'exécution 22 ms 62 ms 9 ms 250 ms
Mémoire 1788 KB 3188 KB 640 KB 38660 KB

Résumé

Site référencé

Recommended Posts

Résolution avec Ruby, Perl, Java et Python AtCoder Diverta 2019 Concours de programmation Manipulation de chaînes C
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 107 B Manipulation de chaînes
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 065 C-th power
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 098 C Somme cumulative
Résolution avec Ruby, Perl, Java et Python AtCoder CADDi 2018 C factorisation premier
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 A
Résolution avec Ruby et Python AtCoder ABC011 C Méthode de planification dynamique
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 B
Manipulation de chaîne C AtCoder ABC110 à résoudre dans Ruby
Résolution avec Ruby, Perl, Java et Python AtCoder AGC 033 A Recherche de priorité de largeur
AtCoder ABC 165 D Floor Function résolue en Ruby, Perl, Java et Python
Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 131 D Tri des tableaux
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 047 C Expression régulière
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 066 C Hash carré itératif
Résolution avec Ruby et Python AtCoder ARC 059 C Méthode du carré minimum
Résolution avec Ruby et Python AtCoder ABC178 D Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC153 E Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ARC067 C factorisation premier
Résolution avec Ruby et Python AtCoder ABC057 C Décomposition du facteur premier Recherche complète de bits
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 086 C Hash Sorting
Résolution avec Ruby et Python AtCoder CODE FESTIVAL 2016 qual C B Priority Queue
Résolution avec Ruby et Python AtCoder ABC151 D Recherche de priorité de largeur
Résolution avec Ruby et Python AtCoder AISING2020 D Méthode carrée itérative
Résolution avec Ruby et Python AtCoder ABC138 D Liste adjacente
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
AtCoder ARC104 B Somme cumulative résolue en Ruby, Python et Java
Résolution avec Ruby, Python et numpy AtCoder ABC054 B Calcul de la matrice
Résolution avec Ruby, Python et networkx AtCoder ABC168 D Liste adjacente
AtCoder Beginner Contest 170 B Problème Explication "Crane and Turtle" (Python3, C ++, Java)
AtCoder Beginner Contest 167 B Problème Explication de "Programmation linéaire facile" (Python3, C ++, Java)
Benchmarks langage C, Java, Python avec factorisation prime
AtCoder Beginner Contest 176 Explication de l '«étape» du problème C (Python3, C ++, Java)
Programmation avec Python et Tkinter
Concours de programmation Atcoder Acing Python
AtCoder Beginner Contest 166 A Explication du problème "A? C" (Python3, C ++, Java)
AtCoder Beginner Contest 174 B Explication du problème "Distance" (C ++, Python, Java)
AtCoder Beginner Contest 177 B Explication du problème "Sous-chaîne" (Python3, C ++, Java)
AtCoder Beginner Contest 167 Explication d'un problème "enregistrement" (Python3, C ++, Java)
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
AtCoder Beginner Contest 169 B Problème Explication "Multiplication 2" (Python3, C ++, Java)
[Swift / Ruby / Python / Java] Programmation orientée objet
Scraping avec Node, Ruby et Python
Créez des rendez-vous pour le concours AtCoder sur Google Agenda avec Python et GAS
AtCoder Beginner Contest 169 Explication du problème "Multiplication 1" (Python3, C ++, Java)
AtCoder Beginner Contest 176 A Explication du problème "Takoyaki" (Python3, C ++, Java)
AtCoder Beginner Contest 175 B Explication du problème "Making Triangle" (C ++, Python3, Java)
Résolu AtCoder ABC 114 C-755 avec Python3
AtCoder Beginner Contest 175 Explication d'un problème "Saison des pluies" (C ++, Python3, Java)
Répertorier les chaînes de fractionnement et de jointure avec fractionnement et jointure (Perl / PowerShell / Java / Kotlin / Python)
AtCoder Beginner Contest 176 B Problème Explication "Multiple of 9" (Python3, C ++, Java)
AtCoder Beginner Contest 174 C Problème (Python)
AtCoder Beginner Contest 174 Explication d'un problème "Climatiseur" (C ++, Python, Java)
AtCoder Beginner Contest 177 Explication du problème "Ne soyez pas en retard" (Python3, C ++, Java)
AtCoder Beginner Contest 173 B Problème Explication du "Récapitulatif de l'état du juge" (Python3, C ++, Java)
Résolution avec Ruby et Python AtCoder ABC172 C Dichotomie de somme cumulée
AtCoder Beginner Contest 177 Explication du problème C "Somme des produits de paires" (Python3, C ++, Java)
AtCoder Beginner Contest 165 Un problème Explication "We Love Golf" (Python3, C ++, Java)
Crypter avec Ruby (Rails) et décrypter avec Python
Scraping Web facile avec Python et Ruby