給定一個字串只含有數字,判定這個字串能表達的所有IP地址
本題源自LeetCode
-------------------------------------------------------------------
用三重迴圈遍歷字串,每個段的長度不能超過三,
java程式碼:
public ArrayList<String> restoreIpAddresses(String s) { ArrayList<String> result=new ArrayList<String>(); int len=s.length(); for(int i=1;i<4&&i<len-2;i++){ for(int j=i+1;j<i+4&&j<len-1;j++){ for(int k=j+1;k<j+4&&k<len;k++){ if(len-k>=4) //判斷字串 是否有剩餘 continue; int a=Integer.parseInt(s.substring(0,i)); int b=Integer.parseInt(s.substring(i,j)); int c=Integer.parseInt(s.substring(j,k)); int d=Integer.parseInt(s.substring(k)); if(a>255||b>255||c>255||d>255) continue; String ip=a+"."+b+"."+c+"."+d; if(ip.length()<len+3) continue; result.add(ip); } } } return result; }
C++程式碼 :
vector<string> restoreIpAddresses(string s) { vector<string> result; string t; //存每次子串的結果 DFS(t,s,result,0); return result; } void DFS(string t,string s,vector<string>& result,int count){ if(count==3&&isValid(s)){ result.push_back(t+s); return; } for(int i=1;i<4&&i<s.size();i++){ string sub=s.substr(0,i); //取子串 if(isValid(sub)){ DFS(t+sub+".",s.substr(i),result,count+1); } } } bool isValid(string s){ stringstream ss; int num; ss<<s; ss>>num; if(s.size()>1){ //如果數字長度大於1 ,則首位不能是0; return s[0]!='0'&&num>=0&&num<256; } return num>=0&&num,256; }
相關推薦
給定一個字串只含有數字,判定這個字串能表達的所有IP地址
本題源自LeetCode ------------------------------------------------------------------- 用三重迴圈遍歷字串,每個段的長度不能超過三, java程式碼: public ArrayList<S
3. Project Euler15 給定一個20*20的方格,從左上角到右下角的路徑有多少條?(只允許向右和向下走)
【微--策--略】 1. 五個洞排成一排,其中一個洞裡藏有一隻狐狸。每個夜晚,狐狸都會跳到一個相鄰的洞裡;每個白天,你都只允許檢查其中一個洞。怎樣才能保證狐狸最終會被抓住? 解答:有個問題 錯了 下面是少一天的推理 第一天2洞 第二天2洞 都沒有的話 證明它在後三個裡面 第三天4洞 第四天4
演算法題004 -- [給定一個整數的陣列nums,返回相加為target的兩個數字的索引值] by java
題目 給定一個整數的陣列nums,返回相加為target的兩個數字的索引值。 假設每次輸入都只有一個答案,並且不會使用同一個元素兩次。 舉例: Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums
給定一個非負整數 num,反覆將各個位上的數字相加,直到結果為一位數
示例: 輸入: 38 輸出: 2 解釋: 各位相加的過程為:3 + 8 = 11, 1 + 1 = 2。 由於2是一位數,所以返回 2。 進階: 你可以不使用迴圈或者遞迴,且在 O(1) 時間複雜度內解決這個問題嗎? class Solution {
編寫一個函式實現atoi()函式,即把字串數字轉變為數字
#include<iostream> #include<ctype.h> #include <math.h> using namespace std; int l
js裡判斷一個字串全為數字,js裡刪除數字中的元素
1、js裡用正則表示式判斷一個字串是否全為數字: if(/^\d+$/.test(temp)){ alert(temp + "全為數字."); } 2、js裡刪除陣列中第i個元素(存在此元素): var testArray = test.split(",");
0059 給定一些值和一個要組成的數字,求總的組合數(遍歷解答樹)
如:有1分,2分,5分,10分四種硬幣,每種硬幣無限,給定Target分錢,求多少種組合可以合成Target分錢? // ShangJi.cpp : 定義控制檯應用程式的入口點。 #include
LeetCode58 給定一個僅包含大小寫字母和空格 ' ' 的字串,返回其最後一個單詞的長度。 如果不存在最後一個單詞,請返回 0 。 說明:一個單詞是指由字母組成,但不包含任何空格的字串。
給定一個僅包含大小寫字母和空格 ’ ’ 的字串,返回其最後一個單詞的長度。 如果不存在最後一個單詞,請返回 0 。 說明:一個單詞是指由字母組成,但不包含任何空格的字串。 class Solution { public: int lengthO
劍指offer系列(十五)和為S的連續正數序列,和為s的兩個數字,左旋轉字串
和為S的連續正數序列 題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和為100(至少包括兩個數)。沒多久,他就得到另一組連續正數和為100的序列:18,19,20,21,22。現
給定一個升序排列的陣列,去掉重複的數,並輸出新的陣列的長度。
給定一個升序排列的陣列,去掉重複的數,並輸出新的陣列的長度。 例如:陣列 A={1,1,2},你的程式應該輸出 2 即新陣列的長度,新陣列為 {1,2}。 要求:不能新開陣列分配額外的空間,即常數空間限制。 輸入格式 輸入一個整數 n(1≤n≤1000)。 接下來一行
在右側我們給出了一個已經基本完成的程式,讀入了一個字串,呼叫了一個叫str_len的函式來計算這個字串的長度,並輸出。 聰明的你應該已經發現了,這個叫str_len的函式並沒有完成
在右側我們給出了一個已經基本完成的程式,讀入了一個字串,呼叫了一個叫str_len的函式來計算這個字串的長度,並輸出。 聰明的你應該已經發現了,這個叫str_len的函式並沒有完成,在不修改函式原型的情況下,請完成str_len函式,實現我們上述的功能吧。 樣例輸入 複製 abc
一個足夠大的數字,刪去k個數字後得到最小值
直接上程式碼了 /** * 刪除整數的k個數字,獲得刪除後的最小值 * @param num 目標整數(用String做引數是因為考慮到num的值足夠大) * @param k 刪除數量 * @return */ public
python: 輸出 1~100 之間不能被 7 整除的數,每行輸出 10 個數字,要求應用字串格式化方法美化輸出格式。
#輸出 1~100 之間不能被 7 整除的數 j = 0 #for i in range(1,101): # 遍歷1-100取值,定義為變數 i if i%7 != 0: &n
只含有0,1,2的陣列的排序(java實現)
要求對只含有0,1,2的陣列進行排序,時間複雜度為O(n),空間複雜度為1 秋招筆試題 /*思路: * 設定三個標記指標:iZero, iOne, iTwo * 令iZero從前往後遍歷,指向第一個
輸入任意一個字串,判斷這個字串是否是迴文,迴文示例: 上海自來水來自海上
2.輸入任意一個字串,判斷這個字串是否是迴文 迴文示例: 上海自來水來自海上 ABCCBA 12321 迴文是指中心對稱的文字 #方法1 str = input('請輸入一個字串:') count = 0 lenth = len(str) print('lenth',
(數字,字元)字串轉int陣列
1,舉例 字元字串轉成int陣列,存入int陣列,並進行遍歷。 Scanner input=new Scanner(System.in); System.out.println(“請輸入只含有大小寫的字串”); String string=input.next(
\b切字串 只保留數字、字母
USE tempdb GO IF OBJECT_ID('t') IS NOT NULL DROP TABLE t GO CREATE TABLE t( id VARCHAR(50) PRIMARY K
\b切字串 只保留數字、字母
USE tempdb GO IF OBJECT_ID('t') IS NOT NULL DROP TABLE t GO CREATE TABLE t( id VARCHAR(50) PRIMARY KEY, uname NVARCHAR(20) ) GO INSERT INTO t VAL
Java指定長度隨機生成的字串,且這個字串必須包含大小寫字母和數字
public static String gen(int length) { char[] ss = new char[length]; int i=0; while(i<length) { int f = (int) (Math.random()*3);
寫入一個方法,輸入一個檔名和一個字串,統計這個字串在這個檔案中出現的次數。
public class Test1 { /* * * 寫一個方法,輸入一個檔名和一個字串,統計這個字串在這個檔案中出現的次數。 * */ public static void main