387. 字符串中的第一个唯一字符
int firstUniqChar ( char * s) {
int a[ 26 ] = { 0 } ;
int len = strlen ( s) ;
int i;
for ( i = 0 ; i < len; i++ )
a[ s[ i] - 'a' ] ++ ;
for ( i = 0 ; i < len; i++ ) {
if ( a[ s[ i] - 'a' ] == 1 )
return i;
}
return - 1 ;
}
383. 赎金信
bool canConstruct ( char * ransomNote, char * magazine) {
int len2= strlen ( magazine) , hash2[ 26 ] = { 0 } ;
for ( int i= 0 ; i< len2; i++ )
hash2[ ( magazine[ i] - 'a' ) % 26 ] ++ ;
int len1= strlen ( ransomNote) , hash1[ 26 ] = { 0 } ;
for ( int i= 0 ; i< len1; i++ ) {
hash2[ ( ransomNote[ i] - 'a' ) % 26 ] -- ;
if ( hash2[ ( ransomNote[ i] - 'a' ) % 26 ] == - 1 ) return 0 ;
}
return 1 ;
}
242. 有效的字母异位词
bool isAnagram ( char * s, char * t) {
int len2= strlen ( t) , len1= strlen ( s) , hash1[ 26 ] = { 0 } ;
if ( len2!= len1) return 0 ;
for ( int i= 0 ; i< len1; i++ )
hash1[ ( int ) ( s[ i] - 'a' ) % 26 ] ++ ;
for ( int i= 0 ; i< len1; i++ ) {
hash1[ ( int ) ( t[ i] - 'a' ) % 26 ] -- ;
if ( hash1[ ( int ) ( t[ i] - 'a' ) % 26 ] == - 1 ) return 0 ;
}
return 1 ;
}