Maison > développement back-end > Golang > Comment ajouter des zéros aux éléments de chaîne découpés en 2D

Comment ajouter des zéros aux éléments de chaîne découpés en 2D

PHPz
Libérer: 2024-02-13 15:20:08
avant
1176 Les gens l'ont consulté

Comment ajouter des zéros aux éléments de chaîne découpés en 2D

En programmation PHP, la manipulation de chaînes est l'une des tâches courantes. Une tâche courante consiste à ajouter des zéros aux éléments de chaîne de tranche 2D. En ajoutant des zéros aux éléments de chaîne, vous pouvez garantir que la longueur de la chaîne est cohérente et faciliter le traitement et la comparaison ultérieurs. Alors, comment réaliser cette tâche ? Ci-dessous, l'éditeur PHP Banana vous présentera en détail comment ajouter des zéros aux éléments de chaîne de tranche bidimensionnelle.

Contenu de la question

La tâche consiste à ajouter des zéros aux éléments de chaîne d'une tranche 2D. L'entrée standard est donc [["7" "3" "1"]["2" "9"]] Je dois ajouter le zéro du dernier élément de chaque tranche au premier élément. Pour chaque pas, le compteur zéro est incrémenté de +1. Par conséquent, la sortie standard devrait être [["700", "30", "1"]["20", "9"]].

J'ai essayé un tel algorithme mais je n'ai pas pu obtenir la réponse attendue. Voici mon code :

package main

import (
    "fmt"
    "strings"
)

func addZero(strs [][]string) [][]string {
    zero := "0"
    counter := 0
    for i := range strs {
        for j := range strs[i] {
            strs[i][j] += strings.Repeat(zero, counter)
        }
        counter++
    }
    return strs
}

func main() {
    fmt.Println(addZero([][]string{{"7", "3", "1"}, {"2", "9"}}))// here the result is [[7 3 1] [20 90]]
 
}
Copier après la connexion

Comment puis-je modifier mon code pour obtenir la réponse attendue ?

Solution de contournement

Le compte zéro doit être réinitialisé à chaque ligne, alors déplacez ce code à l'intérieur de la première boucle.

La plage commence aussi à l'index 0 开始,并且您希望从行尾开始增加零,因此 counter 必须从 len(strs[i])-1 et il faut la décrémenter :

func addzero(strs [][]string) [][]string {
    for i := range strs {
        zero := "0"
        counter := len(strs[i]) - 1
        for j := range strs[i] {
            strs[i][j] += strings.repeat(zero, counter)
            counter--
        }
    }
    return strs
}
Copier après la connexion

Après avoir effectué ces modifications, le résultat sera (essayez-le sur le go Playground) :

[[700 30 1] [20 9]]
Copier après la connexion

Notez que si vous commencez à traiter les lignes à partir de la fin, le suffixe (zéros) à ajouter sera augmenté. Vous pouvez donc supprimer strings.repeat() en conservant et en "étendant" le suffixe précédent :

func addzero(strs [][]string) [][]string {
    for _, line := range strs {
        zeros := ""
        for i := len(line) - 1; i >= 0; i-- {
            line[i] += zeros
            zeros += "0"
        }
    }
    return strs
}
Copier après la connexion

Cette sortie est la même. Essayez-le sur le go terrain de jeu.

Notez également que les chaînes peuvent être découpées et que le résultat partage la mémoire avec la chaîne découpée. C'est donc rapide et ne crée aucun déchet ! Vous pouvez construire une longue chaîne zeros contenant uniquement des zéros, et cette longue chaîne peut être découpée pour contenir autant de zéros que vous le souhaitez. Cette solution évite toute allocation et concaténation de chaînes inutiles :

var zeros = strings.Repeat("0", 1000) // Use the maximum length here

func addZero(strs [][]string) [][]string {
    for _, line := range strs {
        count := len(line) - 1
        for i := range line {
            line[i] += zeros[:count-i]
        }
    }
    return strs
}
Copier après la connexion

Cela affiche à nouveau le même contenu, veuillez l'essayer sur le go terrain de jeu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal