Chapter 1 | Arrays and Strings
程序员文章站
2024-02-29 18:32:28
...
1.三数求和。
排序。
外层遍历所有的数,若当前是i,
内层双指针,一头一尾使得和为 -a[i],大了左移右侧指针,小了右移左侧。
复杂度:O(n^2)
2.bitset
(1)桶排的空间优化
数组压缩为32位int型的一个数字 。
(2)判断一个字符串中的字符是否唯一(即没有重复)
注意询问范围,如果只是ascii码,共256个。(后128个是键盘不可显示字符)
压缩
int idx = v/32, shift=v%32;
if(a[idx] & (1 << shift)) return false;//判断这位上代表的字符是否出现过
a[idx] |= (1 << shift);
3.ctyle
字符串末尾包括'\0'
4.写一个函数判断两个字符串是否是变位词。
仍然询问一下范围,ascii码直接开数组。其它什么都有用map
unordered_map是个很棒的stl,只要你不需要排序,查找的时间复杂度只有O(1)
/*
写一个函数判断两个字符串是否是变位词。
变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词。比如说, abbcd和abcdb就是一对变位词。
*/
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
string a,b;
unordered_map<char ,int> mp;
bool init(){
cin>>a;
for(auto i:a){
mp[i]++;
}
cin>>b;
for(auto i:b){
if(mp[i] == 0) return 0;
mp[i]--;
}
for(auto i:mp){
if(i.second) return 0;
}
return 1;
}
int main(){
bool ans = init();
cout << ans<< endl;
}
原地进行矩阵旋转。
分两步。 第一步交换主对角线两侧的对称元素,第二步交换第i行和第n-1-i行。
逆时针:右上左下的swap,顺时针:左上右下。
转载于:https://www.jianshu.com/p/40a99561b901
上一篇: 深入理解计算机系统读书笔记
下一篇: Shiro Ajax 302 跳转问题
推荐阅读
-
4. Median of Two Sorted Arrays(divide and conquer)
-
Pointers and Strings
-
Multidimensional Array And an Array of Arrays
-
Chapter 3. Strings, Vectors, and Arrays
-
《C primer plus》 Chapter 14.1
-
Chapter 1 | Arrays and Strings
-
C++ Primer Chapter 2. Variables and Basic Types
-
C++ Primer Plus chapter2
-
C Primer Plus ---- Chapter 3 ----Data and C ----4. 类型转换
-
从零开始的指针运用1