Rumah  >  Artikel  >  pembangunan bahagian belakang  >  golang mengulang aksara terpanjang secara berterusan

golang mengulang aksara terpanjang secara berterusan

王林
王林ke hadapan
2024-02-11 15:24:101045semak imbas

golang mengulang aksara terpanjang secara berterusan

editor php Baicao memperkenalkan anda kepada kaedah penyelesaian masalah yang menarik - "golang terus mengulang watak terpanjang". Inti masalah ini adalah untuk mencari aksara yang paling berturut-turut dan nombor mereka dalam rentetan. Di Golang, kita boleh mencapai fungsi ini dengan menggelung setiap aksara rentetan dan menggunakan pembilang dan pembolehubah maksimum. Dengan algoritma yang mudah dan cekap ini, kami boleh menyelesaikan masalah ini dengan mudah dan mendapatkan hasil yang tepat. Seterusnya, mari kita belajar tentang proses pelaksanaan khusus!

Isi soalan

package main

import (
    "fmt"
)

type Result struct {
    C rune // character
    L int  // count
}

func main() {
    fmt.Print(LongestRepetition(""))
}
func LongestRepetition(text string) Result {
    if text == "" {
        return Result{}
    }
    var max Result
    if len(text) == 1 {
        max.C = rune(text[0])
        max.L = 1
        return max
    }
    var count Result
    for _, s := range text {
        if count.C == s {
            count.L++
            count.C = s
            if count.L > max.L {
                max.C = count.C

                max.L = count.L
            }
        } else {
            count.L = 1
            count.C = s
        }

    }
    return max
}

//// dijangka : {c: 0, l: 0} sama rata : {c: 98, l: 1}

Saya cuba melengkapkan https://www.codewars.com/kata/586d6cefbcc21eed7a001155/train/go Watak yang paling lama diulang berturut-turut Untuk ujian saya ia berfungsi dengan baik Tetapi apabila saya menolak untuk cw ia gagal untuk menyelesaikan ujian bengkok tolong saya Mungkin saya boleh menambah baik kod saya di suatu tempat atau sesuatu yang saya keliru

Penyelesaian

Penyelesaian anda terlalu rumit. memudahkan.

type result struct {
    c rune // character
    l int  // count
}

func longestrepetition(text string) result {
    max := result{}

    r := result{}
    for _, c := range text {
        if r.c != c {
            r = result{c: c}
        }
        r.l++

        if max.l < r.l {
            max = r
        }
    }

    return max
}
Time: 1737ms Passed: 2 Failed: 0
Test Results:
Fixed Tests
it should work with the fixed tests
Random Tests
it should work with the random tests
You have passed all of the tests! :)

Atas ialah kandungan terperinci golang mengulang aksara terpanjang secara berterusan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam