1impl Solution {2pub fn appeal_sum(s: String) -> i64 {3let n = s.len();4let mut f = vec![0; n];5let mut last_pos = [-1; 26];67// println!("last_pos {:?}", last_pos);89for (i, c) in s.chars().enumerate() {10let char_id = c as usize - 'a' as usize;11let i2 = i as i64;12// println!("char id {}", char_id);13if i == 0 {14f[i] = 1;15last_pos[char_id] = i2;16continue;17}18f[i] += f[i - 1] + i2 - last_pos[char_id];19last_pos[char_id] = i2;20}2122let ans = f.iter().sum();2324ans25}26}