c++构造函数另一种初始值写法
很多人可能没有注意到,都写成第一种办法的样子,如果有人问我第一种办法可以吗?当然可以,但是效率比较差一些,不够“大气”。(c++构造函数的概念以及作用本文不简述,具体的概念及作用可以自行百度,请谅解)先放出一段类的定义:12345678910111213class complex{public: //需要重点讨论的构造函数 complex (double r= 0, double i = 0) { re = r; im = i; } complex& operator += (const compl&); double real () const { return re; } double imag () const { return im; }private: double re, im; friend complex& _doapl (complex*, const complex&);}然后我们重点在以下的构造函数12complex (doubl...
交换字符串
给定一个字符串S[0…N-1],要求把S的前K个字符移动到S的尾部,三种办法。 题目描述给定一个字符串S[0…N-1],要求把S的前K个字符移动到S的尾部如把”abcdef“其前面的2个字符”ab“移动到字符串的尾部,得新字符串”cdefab“,即字符串循环左移K。123注意:1. 循环左移K位等价于循环右移N-K位(可以自己举个例子理解,比如K=2,N=5)2. 时间复杂度要求为0(n),空间复杂度位0(l) 办法: 暴力法:12每次循环左移1位,调用K次即可- 时间复杂度:O(KN),空间复杂度0(l) 拷贝法:1234S[0...K]->T[0...K]S[K+1...N-1]->S[0...N-K-1]T[0...K]->S[N-K...N-1]- 时间复杂度0(N),空间复杂度0(K) 可以看出,上面两种办法都没有办法同时符合条件,下面给出一种比较灵性的解法。 倒转法:1234567 原理:(X‘Y’)‘=YX 举个栗子: 字符串:abcdef X=ab X'=ba Y=cdef Y'=fedc(X‘Y’)‘=(bafedc)...