This commit is contained in:
Mhrooz 2023-11-26 00:56:58 +01:00
parent 3568e8cca6
commit e1e368ca7a
2 changed files with 94 additions and 2 deletions

View File

@ -1,3 +1,4 @@
//https://leetcode.com/problems/modify-graph-edge-weights/
#include<bits/stdc++.h>
using namespace std;
class Solution{
@ -6,7 +7,9 @@ public:
}
}
};
int main(){
int n;
}

89
828-231125-pass/main.cpp Normal file
View File

@ -0,0 +1,89 @@
#include<bits/stdc++.h>
using namespace std;
class Solution{
public:
int uniqueLetterString(string s){
const int constraint_length = s.size() + 10;
const int ch_nums = 26;
const int first_char = (int)'A';
// store the distance, first is the distance to the previous charactor, second is the distance to the next char
pair<int,int> ch_dist[constraint_length];
//index store index from 1
int index[ch_nums] = {};
// try to find the distance
for(int i = 0 ; i < s.size() ; i++){
const int word_th = s[i] - first_char;
ch_dist[i + 1].first = i + 1 - index[word_th];
if(index[word_th] != 0)
ch_dist[index[word_th]].second = i + 1 - index[word_th];
index[word_th] = i + 1;
}
for(int i = 0 ; i < ch_nums ; i++){
if(index[i]!=0){
ch_dist[index[i]].second = s.size() + 1 - index[i];
// cout<<i<<' '<<s.size()<<'+'<<1<<'-'<<index[i]<<'='<<s.size() + 1 - index[i]<<endl;
}
}
for(int i = 1 ; i < s.size() + 1 ; i++){
// cout<< i<<' '<< ch_dist[i].first<< ' '<< ch_dist[i].second<<' '<<index[s[i-1]-'A']<<endl;
}
long long rlt = 0;
for(int i = 1 ; i < s.size() + 1 ; i++){
rlt += ch_dist[i].first + ch_dist[i].second - 1;
int pre, nxt;
// if(i == ch_dist[i].first){
// pre = i - 1;
// }
// else{
// pre = i - ch_dist[i].first ;
// }
// if(i == index[s[i - 1]-'A'])
// nxt = s.size() - i;
// else
// nxt = ch_dist[i].second ;
pre = ch_dist[i].first - 1;
nxt = ch_dist[i].second - 1;
rlt += pre * nxt;
// cout<<pre<<' '<<nxt<<endl;
}
return rlt ;
}
};
int main(){
Solution sol;
string ex1 = "ABC";
cout<<ex1<<endl;
cout<<sol.uniqueLetterString(ex1)<<endl;
string ex2 = "ABA";
cout<<ex2<<endl;
cout<<sol.uniqueLetterString(ex2)<<endl;
string ex3 = "LEETCODE";
cout<<ex3<<endl;
cout<<sol.uniqueLetterString(ex3)<<endl;
string ex4 = "ABCD";
cout<<ex4<<endl;
cout<<sol.uniqueLetterString(ex4)<<endl;
string ex5 = "ABAC";
cout<<ex5<<endl;
cout<<sol.uniqueLetterString(ex5)<<endl;
string ex6 = "ABACA";
cout<<ex6<<endl;
cout<<sol.uniqueLetterString(ex6)<<endl;
return 0;
}