原创 原碼、反碼、補碼:int x=1;int y=~x;

知識儲備: 在計算機中,整數用補碼形式表示。 ~表示按位取反。 (1)對於正數,補碼就是其原碼。 (2)對於負數,原碼求補碼是取反加一(符號位除外),補碼求原碼也是取反加一(符號位除外)。 所以對於此題,解答過程如下: 1

原创 字符串連續出現次數最多的子串

題目 求字符串“abcbcbcaa”中連續出現次數最多的子串。 思路 將整個字符串分解爲後綴字符串組,便於比較連續出現的子串。 abcbcbcaa //第0行 bcbcbcaa //第1行 cbcbcaa //第

原创 字符串循環右移

問題: 編寫一個函數,作用是把一個char組成的字符串循環右移m個。比如原來是”abcdefghi”,如果m=2,移位後應該是“hiabcdefg”。 解法: (解法一)使用strcpy void rightShifting(

原创 《網易遊戲2017互娛》實習筆試編程一:豎式填空

題目介紹: [編程|100分] 豎式填空 時間限制:1秒 空間限制:65536K 題目描述 小Q是名小學生,他最喜歡數學中的加法豎式填空了。例如下面的填空題,每個空格表示1…9中的一個數字。 有時候這種豎式題不一定只有唯一

原创 實現用KMP算法匹配字符串

問題 有一個字符串“ABCABABCABDA”,問該字符串裏面是否包含“ABCABD”,是的話請求出下標位置。 思路 一、簡單的想法 最容易想到的方法應該就是讓target的第一個字符和pattern的第一個字符比較,如果不相等

原创 編程實現整數和字符串的相互轉換

一、整數 -> 字符串 思路:對每一位加’0’,再逆序。整數加’0’會被隱式轉化成char。 代碼: #include <iostream> #include <string> using namespace std; //

原创 string的內存分配引發的思考

今天突然在想string的內存分配是怎樣的呢?通過查閱《C++primer》和網上資料以及做實驗,對string這個傢伙更有進一步的認識了。 一、初始化string對象的方式 如果使用等號(=)初始化一個變量,實際上執行的是拷貝初

原创 《編程之法》:尋找和爲定值的兩個數

題目 輸入一個整數數組和一個整數,在數組中查找一對數,滿足它們的和正好是輸入的那個整數。如果有多對數的和等於輸入的整數,輸出任意一對即可。 思路一:無序則hash 建立一張hash表,存儲每個整數,然後遍歷數組的前一半,在hash

原创 求字符串中重複出現的最長子串

題目 找出字符串babcdabdabcdb中出現的相同且長度最長的字符串,輸出它及其首字符的位置。 思路 注意這道題和上一篇的不同,上一篇是求字符串中連續出現次數最多的子串。 不過,這兩道題都有共同點,都可以用後綴字符串組來幫助

原创 求0到n之間所有數字中1的個數和

題目 計算4 000 000 000以內的最大的那個f(n)==n的值,函數f的功能是統計0到n之間所有數字中1的個數和。 思路 這道題需要解決2個問題,求數字1的個數和以及求最大的f(n)=n。 一、子問題1:求數字1的個數和

原创 《編程之法》:字符串的包含

題目 給定一長字符串a和一短字符串b。請問,如何最快地判斷出短字符串b中的所有字符是否都在長字符串a中。 思路 設一個整數hash,對於a中的每一位,通過’|’運算在二進制hash對應的位上置位。然後對於b中的每一位,通過’&’運

原创 《編程之法》:尋找最小的k個數

題目 標題 有n個整數,請找出其中最小的k個數。 思路 維護一個容量爲k的最大堆,用來存儲最先遍歷的k個數。建好堆後遍歷剩餘n-k個整數,將每次遍歷到的新元素與堆頂做比較,若比堆頂小,則用該元素替換堆頂,然後更新堆。遍歷結束後堆中

原创 《編程之法》:奇偶數排序

題目 給定一個整數數組,請調整數組中數的順序,使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。 思路 學過快速排序的一看到這道題就會覺得非常熟悉。這根本就是快速排序中的劃分算法的變種嘛。直接聲明2個指針指向首尾,首指針

原创 《編程之法》:完美洗牌算法

題目 有一個長度爲2n的數組{a1,a2,a3,…,an,b1,b2,b3,…,bn},希望排序後變成{a1,b1,a2,b2,a3,b3,…,an,bn}。 思路 書上講了先用完美洗牌算法將數組排序爲{b1,a1,b2,a2,b3,

原创 使用java和CORBA實現分佈應用編程

因爲課程的需要,學習了下用java和CORBA來實現分佈應用編程,具體的CORBA是什麼以及它的框架結構我就不多說了,這裏我是給出一個比較完整的例子來展示下代碼要怎麼寫。 應用背景: 使用java和CORBA構建一個關於制訂to-do-l