字串碎片
1. 常規思路
統計所有碎片的總長度、碎片的數量,進行除法運算。
public class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String str = scan.nextLine().trim();
double sum = 0;
int ncount = 1; // 碎片個數
int sliceLen = 1; // 某一個碎片的長度
// 如果字串為空
if (str == "")
{
System.out.println(0);
return;
}
// 如果字串長度為1
if (str.length() == 1)
{
System.out.println(1);
}
for (int i=0; i<str.length()-1; i++)
{
// 如果當前字元和下一個相等
if (str.charAt(i) == str.charAt(i+1))
{
sliceLen++;
}
else
{
sum += sliceLen;
ncount++; // 字元種類數加1
sliceLen = 1;
}
}
// 加上最後一個碎片的長度
sum += sliceLen;
System.out.println(sum / ncount);
}
}
2. 利用技巧
所有碎片的總長度是已知的,即為字串的總長度,所以只需考慮不同碎片的個數即可。
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String str = scan.nextLine().trim();
char c = str.charAt(0);
int n = 1; // 記錄不同的碎片數量
for (int i=1; i<str.length(); i++)
{
if (c != str.charAt(i))
{
c = str.charAt(i);
n++;
}
}
System.out.println(str.length() * 1.0 / n);
}
相關文章
- jQuery碎片jQuery
- 索引碎片整理索引
- MySQL表碎片整理MySql
- Android 碎片(Fragment)講解AndroidFragment
- DataX的知識碎片
- Oracle資料表碎片整理Oracle
- MySQL的表碎片處理MySql
- mysql之 OPTIMIZE TABLE整理碎片MySql
- 碎片化時間高效利用
- Java鬥地主專案碎片Java
- Spark Core的知識碎片Spark
- Vite打包碎片化,如何化解?Vite
- phpcms碎片管理如何使用呢?PHP
- windows10系統磁碟碎片整理在哪 win10如何開啟磁碟碎片整理WindowsWin10
- 碎片化學習前端知識前端
- 記憶體碎片與緩解記憶體
- 碎片化學習Java大綱Java
- Oracle資料庫表碎片整理Oracle資料庫
- Win10系統怎麼清理磁碟碎片 win10系統清理磁碟碎片的方法Win10
- 硬碟加速和磁碟碎片整理軟體硬碟
- Oracle 資料庫整理表碎片Oracle資料庫
- 碎片化的時代,如何學習
- 碎片化學習Java(十一)-- Java if案例Java
- MySQL碎片整理小節--例項演示MySql
- Redis記憶體碎片深入分析Redis記憶體
- 駐點日記之記憶碎片
- 【105天】前端碎片知識拾遺00003前端
- 【106天】前端碎片知識拾遺00004前端
- linux kernel記憶體碎片防治技術Linux記憶體
- 表碎片起因及解決辦法(zt)
- 碎片化學習Java(二)-- Java註釋Java
- Redis效能篇(四)Redis記憶體碎片Redis記憶體
- 字串-字串分割字串
- Sqlserver的表沒有高水位但是有碎片的概念,sqlserver表的碎片的檢視和整理方法SQLServer
- 如何避免SHRINKDATABASE & SHRINKFILE 產生索引碎片(轉載)Database索引
- 碎片化學習Java(七)-- Java常量的使用Java
- 碎片化學習Java(十六)Java For迴圈案例Java
- DocumentFragment文件碎片(高效批量更新多個節點)Fragment