Ia adalah masalah mudah daripada kod leet dengan penerangannya ialah:
Anda diberi rentetan s. Skor rentetan ditakrifkan sebagai jumlah perbezaan mutlak antara nilai ASCII aksara bersebelahan.
Kembalikan markah s.Contoh 1:
Input: s = “hello”
Keluaran: 13Penjelasan:
Nilai ASCII bagi aksara dalam s ialah: 'h' = 104, 'e' = 101, 'l' = 108, 'o' = 111. Jadi, skor s ialah |104 - 101| |101 - 108| |108 - 108| |108 - 111| = 3 7 0 3 = 13.Contoh 2:
Input: s = “zaz”
Keluaran: 50Penjelasan:
Nilai ASCII bagi aksara dalam s ialah: 'z' = 122, 'a' = 97. Jadi, skor s ialah |122 - 97| |97 - 122| = 25 25 = 50.
Kekangan:2 <= s.panjang <= 100
s hanya terdiri daripada huruf kecil Inggeris.
Tiada banyak perkara yang perlu dilakukan dalam perkara ini, pada dasarnya anda perlu mengulang dan mengambil dua aksara rentetan dan tolak pertama hingga kedua dan dapatkan nilai mutlaknya dan tambah ke dalam pembolehubah jumlah.
Adalah penting untuk bermula pada indeks kedua untuk mengelakkan pengecualian di luar batasan.
Untuk mendapatkan char sebagai ascii pada asasnya anda menghantar sebagai integer dan itu akan berlaku.
class Solution { public int scoreOfString(String s) { int sum = 0; for(int i=1;i<s.length();i++){ final int first = (int) s.charAt(i - 1); final int second = (int) s.charAt(i); sum += Math.abs(first - second); } return sum; } }
Masa Jalan: 1 ms, lebih pantas daripada 99.37% penyerahan dalam talian Java untuk Score of a String.
Penggunaan Memori: 42 MB, kurang daripada 30.18% daripada penyerahan dalam talian Java untuk Score of a String.
—
Itu sahaja! Jika ada perkara lain untuk dibincangkan, sila tinggalkan ulasan, jika saya terlepas apa-apa beritahu saya supaya saya boleh mengemas kini dengan sewajarnya.
Sehingga post seterusnya! :)
Atas ialah kandungan terperinci Leetcode — Skor Rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!